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

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

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

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

Q&A

解決済

1回答

3668閲覧

Go言語のifの後のカンマについて

tuioku

総合スコア42

Go

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

0グッド

0クリップ

投稿2019/05/14 09:45

下記のコードブロックの「if awsError, ok := err.(awserr.Error); ok {」の部分ですが、
どれが、trueだったらこのif文を通るか分かりません。
一番右の ok は返り値でしょうか??
「ok : err.(awserr.Error)」は「err.(awserr.Error)」の返り値を代入していると思うのですが、合っていますか??
一番左のawsErrorはどのタイミングの値なのでしょうか??

if awsError, ok := err.(awserr.Error); ok { switch awsError.Code() { case dynamodb.ErrCodeInternalServerError: fmt.Println(dynamodb.ErrCodeInternalServerError, awsError.Error()) default: fmt.Println(awsError.Error()) } } else { // Print the error, cast err to awserr.Error to get the Code and // Message from an error. fmt.Println(err.Error()) }

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

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

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

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

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

guest

回答1

0

ベストアンサー

まずawsError, ok := err.(awserr.Error)が実行され、関数の戻り値2つがawsErrorokに代入されます。その後okが評価されるという流れです。

下記の場合、OKが出力されます。

go

1package main 2 3import "fmt" 4 5func hoge() (bool, bool) { 6 return false, true 7} 8 9func main() { 10 if _, ok := hoge(); ok { 11 fmt.Println("OK") 12 } else { 13 fmt.Println("NG") 14 } 15}

投稿2019/05/14 10:07

iwamot

総合スコア1154

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

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

tuioku

2019/05/14 10:34

なるほど!返り値が二つあるんですね!理解できました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問