go funcの使い分け

Ken published on
2 min, 271 words

Categories: Programming

Goは色々と今までの言語と異なり、慣れるのに一苦労なんじゃないか?と思いつつも、コンセプトは結構好き。 そんな言語だけど、こういう初歩的なところで悩むことが多い。

go func

さぁ、どっちがいいのか?

無名関数として実行している。

i := 3
var result int
func() {
  result = i * 10
}()

goroutineとして実行している。

i := 3
c := make(chan int)
var result int
go func() {
  result = i * 10
  c<- 1
}()
<-c

どっちがいいというか、こういう書き方ができるというサンプルであって、

  • 処理を明示したいなら前者
  • そっちの処理をさせつつ、そのまま別の処理もしたい場合は後者

って使い分けなのかなぁ?と思っている。

前者はこうすべきなのでは?と思ったり。

i := 3
result := func() (result int) {
  result = i * 10
  return
}()

まとめ

こういう作法とか使い分けを知りたい。