go言語学習雑記2
go言語の勉強雑記その2
今回は文法
for文
goの言語は他の言語と比べて非常に柔軟性があります。
まずは普通のfor文
for i := 0; i < 10; i++ {
sum += i
}
この条件式をいじるとwhile文のような挙動を実現できます
sum1 := 1
for sum < 1000 {
sum1 += sum
}
これで条件式を満たさなくなるまで処理を続けます。
さらにいじると無限ループができます。
for {}
if文
if x>0 {}
if x>0 {}
シンプルにifを書くだけ、 但し評価を()でくくる必要はないです
また、その場で変数を代入して比較を行うこともできます
if i:=3; i<4 {
// 処理
}
switch文
switch文は評価される変数を省略できる。
t := 11
switch {
case t < 12:
fmt.Println("Good morning!")
case t < 17:
fmt.Println("Good afternoon.")
default:
fmt.Println("Good evening.")
}
なおbreakは自動で挿入されるため書く必要はない
defer文
関数の呼び出し順序を操作する文法。
defer文に実行したい関数を渡すと、呼び出し元の処理が終わった段階で実行される。
func main() {
defer fmt.Println("world")
fmt.Println("hello")
}
main関数が終了した時点で defer文の関数が実行されるため出力される文字列は
hello
world
になる。
deferはstackで実行する関数の順番を操作するので、
fmt.Println("counting")
for i := 0; i < 10; i++ {
defer fmt.Println(i)
}
fmt.Println("done")
上記の場合は
counting 9 8 7 6 5 4 3 2 1 0 done
となります。
stack は LIFO になるので、入れた順番とは逆の順番で出力されるので、上記のような結果になります。
最後に
defer文の使いどきがわからない。下手に使うと可読性が落ちそうなのでチーム開発でのルール決めの難しいそう。
Author And Source
この問題について(go言語学習雑記2), 我々は、より多くの情報をここで見つけました https://qiita.com/souhei-etou/items/3e2cbd9b6e2b8f59a80f著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .