こんにちは、ナナオです。
前回に引き続き競プロを実施していきたいと思います。
今回の問題は以下です。
ifを使いますか?三項演算子を使いますか? | レベルアップ問題集 | プログラミング学習サイト【paizaラーニング】
実装
実装は以下の通りです。
package main
import (
"fmt"
"strings"
)
func main(){
var a int
var b, c, d, e string
fmt.Scan(&a, &b, &c, &d, &e)
if a > 0 {
fmt.Println("plus")
} else {
fmt.Println(a)
}
if b == "hoge" {
fmt.Println("yes")
} else {
fmt.Println(b)
}
if len(c) == 10 {
fmt.Println("ten")
} else {
fmt.Println(c)
}
i := strings.Index(d, "x")
if i != -1 {
fmt.Println(i)
} else {
fmt.Println("nothing")
}
if len(e) == 5 {
fmt.Println("five")
} else {
fmt.Println(string(e[0]))
}
}
Goは三項演算子がないので、普通にif文で実装しました。
かなり冗長ですね。
ということで、三項演算子を代わる関数とif初期化文を活用することでこの冗長性を少しでも減らします。
package main
import (
"fmt"
"strings"
)
func iif(cond bool, t, f any) any {
if cond {
return t
}
return f
}
func main(){
var a int
var b, c, d, e string
fmt.Scan(&a, &b, &c, &d, &e)
fmt.Println(iif(a > 0, "plus", a))
fmt.Println(iif(b == "hoge", "yes", b))
fmt.Println(iif(len(c) == 10, "ten", c))
if i := strings.Index(d, "x"); i != -1 {
fmt.Println(i)
} else {
fmt.Println("nothing")
}
fmt.Println(iif(len(e) == 5, "five", string(e[0])))
}
かなりすっきりしましたね。
では今回はこれで👍