Go言語でGO(勉強記録3(小規模))

テクノロジー

Go言語でGOシリーズの3話です。

そろそろ作りたいものを作っていきたいなあ。

goroutine

コルーチンならぬ、ゴルーチン。

Go言語自慢の、軽量でシンプルなスレッド(っぽい)機能だそうです。

スレッドといえば並行処理。

↓のプログラムでは、2秒に1回実行するtwoSecond()を呼ぶときに「go」を頭につけています。
そうすることで、1秒に1回実行するoneSecond()の合間合間にPrintlnしてくれるようになります。

package main

import (
	"fmt"
	"time"
)

func oneSecond() {
	for i := 1; i <= 6; i++ {
		time.Sleep(1 * time.Second)
		fmt.Println(i, "秒経過(毎秒)")
	}
}

func twoSecond() {
	for i := 1; i <= 3; i++ {
		time.Sleep(2 * time.Second)
		fmt.Println(i*2, "秒経過(2秒ごと)")
	}
}

func main() {
	fmt.Println("ここから")
	go twoSecond()
	oneSecond()
	fmt.Println("ここまで")
}

チャンネル

goroutineと外界(別のgoroutine含む)の間でデータをやり取りするためには「チャンネル」というものを使うらしい。

…というところまでは分かったものの、「なるほどわからん」状態のため、色々例文をサンプルにあちこち組んでみることに。

つまり、丸投げということです。