2016-04-03 28 views
1

Diyelim ki 2 dizgimiz var, str1 ve str2. Str1 eşit str1 için yeni bir değişken istiyorum veya str1 boşsa o zaman str2 eşittir.Go'da bu JS ifadesinin bir karşılığı var mı?

JS ben yazardım:

var str3 = str1 || str2 

git ben yapmak zorunda iken bu gibi: çok ayrıntılı imo biraz olduğunu

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

. JS'de eşdeğer bir ifade var mı?

+0

Go'nun snippet'inin JS'ye çok benzemediğini unutmayın: JS kodunuzu "str1" öğesi "false" olarak ayarlanmış olarak deneyin. Aslında söylemek istediğim, JS yazmak zorunda kaldığımda, bunu Go’da yapacağım gibi yapmaktır; snippet'ini "var str3 = str1 ===" "gibi bir şey yazabilirim? str2: str1' – kostix

+0

Ama Go’da kestirme yok, değil mi? – Ivan

+0

Neyse ki hayır yok. – kostix

cevap

2

JS'de eşdeğer bir ifade var mı?

Hayır, ama kendinizi sık sık bunu bulursanız, size başarmak istediğiniz şeyi yapar bir fonksiyon yazabiliriz:

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] 
} 

Kullanımı:

str3 := strs(str1, str2) 

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

0

Git'de eşdeğer bir işlem yoktur. Bunu bir (ya da bir anahtarla yapmak zorundasınız, ama bu daha da mantıklı) ile yapmak zorundasınız. Ben şöyle yazabilirim:

var str3 string 
if str1 != "" { 
    str3 = str1 
} else { 
    str3 = str2 
} 
İlgili konular