2018年9月15日土曜日

開発環境

  • 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 コメント:

コメントを投稿