質問: Go の変数初期化に伴う条件分岐をもっと良い感じに書きたい
Go にはスクリプト言語でいうところの variable = a || b
のような構文や三項演算子がないようなので、
var accessKeyId, secretAccessKey string if config["aws_access_key_id"] == "" { accessKeyId = os.Getenv("AWS_ACCESS_KEY_ID") secretAccessKey = os.Getenv("AWS_SECRET_ACCESS_KEY") } else { accessKeyId = config["aws_access_key_id"] secretAccessKey = config["aws_secret_access_key"] }
とか
var url string var err error if len(os.Args) == 1 { url, err = gozo.SendCapture() } else { url, err = gozo.SendFile(os.Args[1]) }
こんな感じのコードを毎回書くことになるんだけど、本当は
accessKeyId = config["aws_access_key_id"] || os.Getenv("AWS_ACCESS_KEY_ID") secretAccessKey = config["aws_secret_access_key"] || os.Getenv("AWS_SECRET_ACCESS_KEY")
とか
url, err := len(os.Args) == 1 ? gozo.SendCapture() : gozo.SendFile(os.Args[1])
みたいに書けたらいいと思ってますができません。それは諦めるとしてもちっとまともに書きたいんですがみなさんどうしてるんでしょうか。
追記
- Qiita に場所を移しました: http://qiita.com/naoya@github/items/fbfb853a910a8b3ae0fd