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])
みたいに書けたらいいと思ってますができません。それは諦めるとしてもちっとまともに書きたいんですがみなさんどうしてるんでしょうか。
Goには三項演算子a?b:cはない ―― 代わりの書き方 では諦めるしかない旨が書かれてますが・・・。