Skip to main content

go funcの使い分け

· 2 min read

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
}()

まとめ

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