Goでイマイチしっくりきていないところ
Genericがないとか、継承がないとかは言語特性なので気にならないけど、 Goルーチンのチャネルを関数に与えたときに、 関数の引数で与えたチャネルが出力引数になるというところがScala使っているとどうしてもしっくりこない。
package main import "fmt" func goroutine(numbers []int, c chan int) { sum := 0 for _, num := range numbers { sum += num } c <- sum close(c) } func main() { c := make(chan int) numbers := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10} go goroutine(numbers, c) for result := range c { fmt.Println(result) } }
これも言語特性なので、納得しよう。