2016-04-03 17 views
1

2つの文字列str1とstr2があるとします。私は新しい変数str3をstr1と同じにしたい、あるいはstr1が空でstr2と等しい場合JSでGoには、このJS式に相当するものがありますか?

私が書くでしょう:

var str3 = str1 || str2 

行くに私が好きなことをしなければならない一方で:

str3 := str1 
if str1 == "" { 
    str3 = str2 
} 

芋少しあまりにも冗長です。 JSと同じ表現はありますか?

+0

Goのスニペットは、JSのスニペットとかなり同じではないことに注意してください。「str1」を「false」に設定してJSコードを試してください。私が実際に言いたいのは、私がJSを書くことを余儀なくされたとき、私はGoでそれをやっているのと同じようにしています。だから私はあなたのスニペットを 'var str3 = str1 ==="のようなもので書くだろうか? str2:str1' – kostix

+0

しかし、Goの場合は省略形はありませんか? – Ivan

+0

幸運にも、そうではありません。 – kostix

答えて

2

JSと同じ表現はありますか?

ありませんが、あなた自身が、多くの場合、これをやって見つけた場合、あなたはあなたが達成しようとしているものない関数を書くことができます:

func strs(s ...string) string { 
    if len(s) == 0 { 
     return "" 
    } 
    for _, str := range s[:len(s)-1] { 
     if str != "" { 
      return str 
     } 
    } 
    return s[len(s)-1] 
} 

使用法:

str3 := strs(str1, str2) 

https://play.golang.org/p/Gl_06XDjW4

0

Goには同等の操作はありません。あなたはif(またはスイッチ、しかしそれはもっと冗長です)でそれをしなければなりません。

var str3 string 
if str1 != "" { 
    str3 = str1 
} else { 
    str3 = str2 
} 
関連する問題