mainにコマンドライン実行時に引数を与えるには、flagを使う。
何も指定しないと、Stringの配列で取得されるので、数字をとるなら、strconvで型変換が必要だった。
引数に、引数名を指定できるので、その場合は型も指定できる。
go routineで、先に終わったものをselectで取得するようにしてみた。
単純な計算なので、先に始めた方が先に終わるのかな。
go routineの前後を入れ替えると、先に終わるのが変わる。
package main
import (
"flag"
"fmt"
"strconv"
)
func main() {
flag.Parse()
x_arg, _ := strconv.Atoi(flag.Arg(0))
chan_x := make(chan int)
chan_y := make(chan int)
go func() { chan_x <- 4 + 4 }()
go func(t int) { chan_y <- t * t }(x_arg)
var x int
var y int
select {
case x = <-chan_x:
fmt.Println(x)
case y = <-chan_y:
fmt.Println(y)
}
return