「Go/条件分岐と繰り返し」の版間の差分

削除された内容 追加された内容
コメントの//とコメント文のあいだは半角スペースを入れるのが一般的(カットシステム『やさしいGo言語』などのコメント表記もそうなってる)。スペース無くても分かるが、今後のコピペの手間の省略を考え、スペース追加。
Ef3 (トーク | 投稿記録)
M {{Nav}}
タグ: 2017年版ソースエディター
1 行
{{Nav}}
== 制御構造 ==
Goの構文が[[C言語]]と同様だとか、似ているとか言われるのを聞いたことがあると思います。
 
間違いです。
 
構文的にも、意味論的にもC言語とGoでは大きな隔たりがあり、「同様」や「似ている」の言葉の幅を考えても明確に間違いです。
 
 
=== 条件分岐 ===
Go言語では、条件分岐は、if文などで行えます。C言語と同様では有りません。
C言語にある if や else や switch などの機能は、Go言語にもあります。さて本書ではしかし「if」や「else」は何かにえばスコープルール1をとっは、本書では説明しないので、C言語どの別の教科書い要素お読みくださGoはもってます
 
;C言語:<source lang=c>
C言語にある if や else や switch などの機能は、Go言語にもあります。さて本書では、「if」や「else」とは何かについては、本書では説明しないので、C言語などの別の教科書をお読みください。
if (論理式) {
 
/*処理内容*/
ともかく、Go言語でのif文の書式は
<pre>
if (論理式) {
処理内容
}
</presource>
です。
 
;Goのif文で:<source lang=go>
また、Go言語のif文では、論理式の丸カッコを外して
if } else {
<pre>
if 論理式 { /*処理*/
処理内容
}
</presource>
if文はカッコがあっても無くても、どちらでもいいので(たまたま)許容されますが、for文などの他の構文では丸カッコがあると構文エラーになります。
とも書けます。
 
;コード例:<syntaxhighlight lang="go">
if文は丸カッコがあっても無くても、どちらでもいいのですが、for文などの他の構文では丸カッコがあるとエラーになります。
 
 
;コード例
<syntaxhighlight lang="go">
package main
 
import "fmt"
 
var hensux = 3;
 
func main() {
if (hensux == 3) {
fmt.Println("真だThat's true")
}
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang="go"text>
 
That's true
 
</syntaxhighlight>
;実行結果
<pre>
真だ
</pre>
 
 
 
論理式の中で「○○は△△と等しい」の意味で等号(イコール記号)を使う場合は、C言語と同様に、 <code>==</code> というふうに等号を2つ続けて使います。
51 ⟶ 47行目:
条件「〜でなければ」の else を使う場合、下記のように
 
:<syntaxhighlight lang="go">
<pre>
} else {
fmt.Println("偽です")
}
</syntaxhighlight >
</pre>
 
と1行で
} else {
と続けて書いてください。もし改行するとエラーになります。
 
 
68 ⟶ 60行目:
import "fmt"
 
var hensux = 7;
 
func main() {
if (hensux == 3) {
fmt.Println("真だ")
} else {
87 ⟶ 79行目:
 
=== 繰り返し - for文 ===
Go言語では、For文が繰り返し処理をする唯一の構文となっている。For文には2種類の使い方がある。CやC++などのように
 
<syntaxhighlight lang="go">for i := 0;i < n;i++{
116 ⟶ 108行目:
# 条件が正 (つまり i > nなどといった式が正しい)ならばもう一度 2.に戻る。偽なら終了する
 
また、C言語などと同様にGo言語でも、Break文がforブロック中({ } の内部)にあれば、Forから抜け出す。
 
;コード例:<syntaxhighlight lang="go">
 
;コード例
<syntaxhighlight lang="go">
package main
 
import "fmt"
 
var hensu = 7;
 
func main() {
for i := 1 ; i <= 5 ; i = i+1 {
fmt.Printf("%dかける2= %d です\n", i, i*2 )
}
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
 
 
;実行結果
<pre>
1かける2= 2 です
2かける2= 4 です
144 ⟶ 127行目:
4かける2= 8 です
5かける2= 10 です
</syntaxhighlight>
</pre>