本日のGo
案件も忙しくなってきたので睡眠不足の毎日。
switch文
Goのswitch文はbreakを使わなくても良い
switch os := runtime.GOOS; os { case "darwin": fmt.Println("0S X. ") case "linux": fmt.Println("Linux. ") default: fmt.Printf("%s.\n", os) }
case文の中で変数に条件を指定できるみたい。
それならif-else if-else文使おうよと思ってしまう。
package main import ( "fmt" "time" ) func main() { t := time.Now() switch { case t.Hour() < 12: fmt.Println("Good mornig!") case t.Hour() < 17: fmt.Println("Good afternoon.") default: fmt.Println("Good evening.") } }
defer
初登場のステートメント。
deferで渡した関数は元の関数の終わりまで(return)するまでは実行されないらしい。
よくわからないけど。
package main import "fmt" func main() { defer fmt.Println("world") fmt.Println("hello") }
蒸気のサンプルの場合はPintln関数が返ってきたあと(helloが呼ばれる)にPrintln関数を実行している?(worldが呼ばれる)
package main import "fmt" func main() { fmt.Println("test") for i := 0; i < 11; i++ { defer fmt.Println(i) } fmt.Println("test2") }
testとtest2が呼び出されたあと10から順に数字が出力される。
deferステートメントはstackでデータが格納されるらしい。
今日はここまで。明日は結構いっぱいかけそう。