幾天前在 Golang Taiwan 的 slack 裡看到了一些關於 goroutine 的討論 有人問了以下程式碼 (from http://blog.mergermarket.it/now-youre-thinking-with-channels/) package main import "fmt" func main() { channelForInts := make(chan int) go printIntFromChannel(channelForInts) channelForInts <- 5 } func printIntFromChannel(channel chan int) { number := <-channel fmt.Println("The number is:", number) } 提到上述程式碼在 goplayground 上測試好幾次都會印出 The number is:5 但他自己在本機跑是怎樣執行都不會出現 5 看到這個問題第一個想到的是 sync.Waitgroup 之前剛開始學 goroutine 的概念時,就在 stackoverflow 上看到有人討論相關的議題 加個 sync.Waitgroup 就可以保證看到 goroutine 執行完後的結果。 而事實上會這樣子的原因 Go Programming Language Specification 有寫 Program execution begins by initializing the main package and then invoking the function main.

Continue reading

這是前陣子在工作上用到的 有個 golang 的專案,使用了 gb 來管理第三方套件 當時想套 goconvey 進來 但是一直搞不定執行的方式 後來在 github goconvey issue 裡找到了方式 $ cd /to/your/gb_projects $ PROJECT_DIR=`pwd` $ GOPATH="$PROJECT_DIR/vendor:$PROJECT_DIR" goconvey -packages=1 -port 8899 這樣就會跑 web ui 出來摟 不想跑 web ui 就執行 gb test -v 就可以了…上面這樣只是單純想跑 web ui 而已 XD

Continue reading

Author's picture

kerkerj

Cat lover <3

Backend Engineer

Taiwan