Hello world私だよ。
前回でHello worldまで行けたよ。
今日はGoの並行機能で遊んでいくよ。
以下のプログラムを作るよ。
package main
import (
"fmt"
"time"
)
func readword(ch chan string) {
fmt.Println("なんか入力して~")
var word string
fmt.Scanf("%s", &word)
ch <- word
}
func timeout(t chan bool) {
time.Sleep(10 * time.Second)
t <- true
}
func main() {
t := make(chan bool)
go timeout(t)
ch := make(chan string)
go readword(ch)
select {
case word := <-ch:
fmt.Println("承り~", word)
case <-t:
fmt.Println("はい、時間切れ~")
}
}
####ここで重要なのは、"go"ルーチンと"select”っていう文だよ。
####両方の"go"ルーチンからの戻り値を"select”で受け付けているよ。
これを使うことによってプログラム上で非同期を表しているよ。
今日はGoの並行機能で遊んだよ。
最近、左目の上裏がちょっと痛いよ。
また来週。