開発環境
- macOS High Sierra - Apple (OS)
- Emacs (Text Editor)
- Go (プログラミング言語)
Big Sky :: Go 言語の非同期パターンchannel - 1-2-channel.go
について、チャンネルの方向(sending or receiving(送受信))が指定されてなかったので追加してみた。
コード(Emacs)
// Kevin Chen (2017) // Patterns from Pike's Google I/O talk, "Go Concurrency Patterns" // Golang channels package main import ( "fmt" "time" ) func main() { ch := make(chan string) go channelPrint("Hello", ch) for i := 0; i < 3; i++ { fmt.Println(<-ch) // ends of channel block until both are ready // NOTE: golang supports buffered channels, like mailboxes (no sync) } fmt.Println("Done!") } // Direction「<-」を追加 // camelcase にもしてみた。 func channelPrint(msg string, ch chan<- string) { for i := 0; ; i++ { ch <- fmt.Sprintf("%s %d", msg, i) time.Sleep(time.Second) } }
入出力結果(Terminal)
$ go run sample66.go Hello 0 Hello 1 Hello 2 Done! $
他のコードは記述されてるし、このコードはあえて記述されてなかったのか、そうならその理由は何なのかなぁとちょっと気になったり。
あと、camelcase にしたのは、今まで読んだコードがパッケージ内で使う関数、変数はcamelcase、パッケージ外でも使うものは pascal case で書かれてるものが多かったから。(Gopherの方々にそういうスタイルで書く人が多いのではなく、たまたま読んだコードがそういうものが多かっただけかも。)
元のGithubのアカウントを見つけたから、Pull Request をしてみた。
0 コメント:
コメントを投稿