[공부] 영상/GoLanguage(8)
-
[2019.03.08] Go lang (Channel, Close)
Channel package main import "fmt" func foo(channelBufer chan int, num int) { channelBuffer
2019.03.08 -
[2019.03.08] Go lang (Go routine, sync)
Go routineConcurrency != ParallelismConcurrenct : 코어 하나가 여러개의 스레드를 마치 동시에 돌리는 것 처럼 하는 것Parallelism : 코어 여러개가 여러개의 스레드를 동시에 처리하는 것함수 앞에 go 만 붙이면 됨package main import "time"import "fmt" func say(str string) { for i := 0; i < 3; i++ { fmt.Println(str) time.Sleep(time.Millisecond * 100) }} func main() { go say("Hello") say("World")} WorldHelloWorldHelloWorldHello main 안의 모든 함수가 고루틴일 경우 아무것도 실행이 되지 않..
2019.03.08 -
[2019.03.08] Go lang (Html template)
htmlTemplate.html{{ .Title }}{{ .Description }} Gopackage main import "net/http"import "html/template" type PageTemplate struct { Title string Description string} func indexHandler(writer http.ResponseWriter, reader *http.Request) { pageTemplate := PageTemplate{Title: "index", Description: "This is index page"} template, _ := template.ParseFiles("htmlTemplate.html") template.Execute(writer, page..
2019.03.08 -
[2019.03.08] Go lang (Map, Defer, Panic, Recover)
Mapmap[string]int 는 참조 타입이므로 make를 해줘야한다.make(map[string]int)package main import "fmt" func main() { grades := make(map[string]int) grades["math"] = 90 grades["korean"] = 85 grades["english"] = 80 fmt.Println(grades) fmt.Println(grades["korean"]) for class, grade := range grades { fmt.Println(class, " : ", grade) }} defer= 함수가 어떤 방식으로 끝나든 일단 끝나면 한다. = 함수를 한번 감싸서 끝나는 시점에 호출함package main import "f..
2019.03.08 -
[2019.03.08] Go lang (Struct)
Class가 없음 type struct 로 대체- 키워드를 줄이기 위해서 용어를 하나로 통일한 듯- 생성자도 자동으로 지원- 메소드는 네임스페이스 방식처럼 알려줘서 지원함 package main import "fmt" type car struct { runTime uint16 runSpeed uint16} func (carTemp car) calcRunningDistance() float64 { return float64(carTemp.runTime * carTemp.runSpeed)} func main() { carA := car{runTime: 100, runSpeed: 60} carB := car{runTime: 200} carC := car{100, 80} fmt.Println(carA.runTi..
2019.03.08 -
[2019.03.08] Go lang (서버 제작)
간단한 웹서버 제작package main import "fmt"import "net/http" func indexHandler(writer http.ResponseWriter, reader *http.Request) { fmt.Fprintf(writer, "index page")} func aboutHandler(writer http.ResponseWriter, reader *http.Request) { fmt.Fprintf(writer, "about page")} func main() { http.HandleFunc("/", indexHandler) http.HandleFunc("/index", indexHandler) http.HandleFunc("/about", aboutHandler) http.L..
2019.03.08