開発環境
- 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 コメント:
コメントを投稿