Goの特徴

Go言語の基本

mainパッケージのmain関数がエントリーポイント

package main

import "fmt"

func main() {
	fmt.Printf("Hello, World\n")
}

iota

package main

import (
	"fmt"
	"time"
)

func main() {
	termCh := make(chan struct{})
	finCh := make(chan struct{})

	go func(termCh, finCh chan struct{}) {
		defer func() {
			fmt.Println("go: close(finCh)")
			close(finCh)
		}()

		i := 0
		for {
			fmt.Printf("go: running go routine = %d\n", i)
			i = i + 1
			time.Sleep(1 * time.Second)

			select {
			case <-termCh:
				fmt.Println("go: received stop signal from main")
				return
			default:
			}
		}
	}(termCh, finCh)

	times := 0
	for {
		time.Sleep(800 * time.Millisecond)
		if times > 3 {
			fmt.Println("main: send stop signal")
			close(termCh)
			break
		}
		times = times + 1
	}

	<-finCh
	fmt.Println("main: done")

}

参考 https://golang.org/ref/spec#ConstSpec

参考リンク

実装例など

goroutineのパターンが分かりやすくまとめられている。

数多くの実装例が掲載されている。

初学者に分かりやすく役立つ情報


トップ   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
目次
ダブルクリックで閉じるTOP | 閉じる
GO TO TOP