質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

ループ

ループとは、プログラミングにおいて、条件に合致している間、複数回繰り返し実行される箇所や、その制御構造を指します

Q&A

解決済

1回答

1409閲覧

Goでラベルを使って偶数の場合のみスキップしたい

noa-1129

総合スコア25

Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

ループ

ループとは、プログラミングにおいて、条件に合致している間、複数回繰り返し実行される箇所や、その制御構造を指します

0グッド

0クリップ

投稿2020/11/03 00:04

前提・実現したいこと

Goで二重にネストしたfor文のうち、内側のループ処理に対して、「偶数の場合のみスキップする」を実行したい。

該当のソースコード

go

1package main 2 3import ( 4 "fmt" 5) 6 7func main() { 8SKIP: 9 for a := 1; a <= 5; a++ { 10 for b := 0; b <= 5; b++ { 11 if b % 2 == 0 { 12 continue SKIP 13 } 14 fmt.Printf("a = %d, b = %d\n", a, b) 15 } 16 fmt.Println("ここには来ません") 17 } 18} 19

実行結果

a = 1, b = 1 a = 2, b = 1 a = 3, b = 1 a = 4, b = 1 a = 5, b = 1

考えたこと

continue文は、ブロックの残処理をスキップするという機能から、ループが一回しか処理されていないのではないかと考えましたが、打開する案が思いつきません????
そもそもこのような処理ができるかわからないのですが、もし方法があればご教授いただきたいです。

補足情報(FW/ツールのバージョンなど)

go version go1.15.2 darwin/amd64

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

単純にラベルを使わなければ、contineでforループの次の周回に進みます。

Go

1package main 2 3import ( 4 "fmt" 5) 6 7func main() { 8 for a := 1; a <= 5; a++ { 9 for b := 0; b <= 5; b++ { 10 if b % 2 == 0 { 11 continue 12 } 13 fmt.Printf("a = %d, b = %d\n", a, b) 14 } 15 fmt.Println("ここには来ません") 16 } 17}

実行結果

a = 1, b = 1 a = 1, b = 3 a = 1, b = 5 ここには来ません a = 2, b = 1 a = 2, b = 3 a = 2, b = 5 ここには来ません a = 3, b = 1 a = 3, b = 3 a = 3, b = 5 ここには来ません a = 4, b = 1 a = 4, b = 3 a = 4, b = 5 ここには来ません a = 5, b = 1 a = 5, b = 3 a = 5, b = 5 ここには来ません

投稿2020/11/03 00:19

toast-uz

総合スコア3266

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

noa-1129

2020/11/03 00:42

なるほど!aの値に連動して、bの値を出力するみたいな感じにするのは難しいのですかね????? 例) a = 1, b = 1 a = 2, b = 3 a = 3, b = 5 といった具合にですね...
toast-uz

2020/11/03 00:46

単純に if b % 2 == 0 を if a * 2 - 1 != b にすればよいです。 ただし、その例だと二重ループにする意味はあまり無いですね。
toast-uz

2020/11/03 00:49 編集

一重ループで、b := a * 2 - 1 とすば良くなります。
noa-1129

2020/11/03 00:55

確かにそうですね...ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問