2016-04-03 4 views
1

Nehmen wir an, wir haben 2 Strings, str1 und str2. Ich möchte eine neue Variable str3 gleich str1, oder wenn str1 leer ist dann gleich str2.Gibt es ein Äquivalent dieses JS-Ausdrucks in Go?

In JS würde ich schreiben:

var str3 = str1 || str2 

Während in Go Ich mag es zu tun haben:

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

die imo zu ausführlich ein wenig ist. Gibt es einen äquivalenten Ausdruck wie der in JS?

+0

Beachten Sie, dass das Go's Snippet nicht ganz dem in JS entspricht: versuchen Sie Ihren JS-Code mit 'str1' auf" false "gesetzt. Was ich eigentlich sagen möchte ist, dass wenn ich gezwungen bin, JS zu schreiben, ich es so mache, als würde ich es in Go machen; also würde ich dein Snippet so schreiben wie 'var str3 = str1 ===" "? str2: str1' – kostix

+0

Aber es gibt keine Abkürzung, wenn in Go, richtig? – Ivan

+0

Zum Glück, nein, gibt es nicht. – kostix

Antwort

2

Gibt es einen äquivalenten Ausdruck wie der in JS?

Nein, aber wenn man sich dies oft zu tun finden, könnten Sie eine Funktion schreiben, das tut, was Sie versuchen zu erreichen:

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

Verbrauch:

str3 := strs(str1, str2) 

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

0

Es gibt keine gleichwertige Operation in Go. Sie müssen es mit einem if (oder einem Schalter, aber das ist noch ausführlicher) tun. Ich würde es so schreiben:

var str3 string 
if str1 != "" { 
    str3 = str1 
} else { 
    str3 = str2 
} 
Verwandte Themen