以下のようなコードの中にある go func() {} ()
の最後の丸括弧 ()
がついている理由がわからなかったので調べた。
deferでも同じかもしれない。
goroutine.go
package main
import (
"fmt"
"time"
)
func main() {
go func() {
fmt.Println("goroutine")
}() // この丸括弧()の意味がわからなかった
time.Sleep(time.Second)
}
ドキュメント には 関数を呼び出すために必要。
とあった。
最初どういうことかわからなかったけど、スターティングGo言語を読んで、無名関数が利用されているとわかった。
func() {
fmt.Println("goroutine")
}
が無名関数で、この無名関数をgo文で呼び出す、ということで最後に ()
をつけている...んだと思う。
定義した関数を利用する形に書き直すと以下になる。
goroutine.go
package main
import (
"fmt"
"time"
)
func f() {
fmt.Println("goroutine")
}
func main() {
go f()
time.Sleep(time.Second)
}