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

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

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

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

Q&A

解決済

1回答

3608閲覧

if文で使用する変数の定義と代入の方法

kodai

総合スコア759

Go

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

0グッド

0クリップ

投稿2017/07/02 17:37

if文で戻り値を変数で受け取りたいときは error とともに定義しておく(3)か(4)の方法しかありませんか?
慣例・イディオム・スタイル・宗派などあれば知りたいです。

// (1) if id, err := c.GetID(); err != nil { // handle error } DB.Delete(id) // ここで id が使えない。 // (2) var id int if id, err := c.GetID(); err != nil { // id 定義済みなのでエラーになる // handle error } DB.Delete(id) // (3) var id int var err error if id, err = c.GetID(); err != nil { // handle error } if err := DB.Delete(id); err != nil { // errを使い回す?新たに定義する? // handle error } // (4) if id, err := c.GetID(); err != nil { // handle error } else { if err := DB.Delete(id); err != nil { // handle error } else { // ネストしていく... } }

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

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

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

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

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

guest

回答1

0

ベストアンサー

後の処理で id を使用したいのであれば

go

1 id, err := c.GetID() 2 if err != nil { 3 // handle error 4 } 5 DB.Delete(id)

この様に if の中で処理せずに、処理と if を分けます。一応、if の else 句では id を参照できます。

go

1 if id, err := c.GetID(); err != nil { 2 // handle error 3 } else { 4 DB.Delete(id) 5 }

ですが、長年 golang 本体にパッチを送ってきた僕の観測範囲ではオフィシャルのコードでこの書き方は、(明示的にではないですが)推奨されていません。

投稿2017/07/03 00:44

mattn

総合スコア5030

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

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

kodai

2017/07/05 01:31

ありがとうございました!前者の書き方にします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問