it-swarm.com.de

Kann keine Zeichenfolge mit einem einfachen Anführungszeichen in Golang zuweisen

Ich lerne go und wenn ich mit Saite spiele, habe ich festgestellt, dass, wenn eine Saite in einfachen Anführungszeichen steht, mir Golang eine Fehlermeldung gibt, aber doppelte Anführungszeichen funktionieren. 

func main() {
    var a string
    a = 'hello' //will give error
    a = "hello" //will not give error
}

Dies ist der Fehler, den ich auf meinem System bekomme:

illegal rune literal

Wenn ich auf dem Spielplatz dasselbe versuche, erhalte ich diese Fehlermeldung:

prog.go:9: missing '
prog.go:9: syntax error: unexpected name, expecting semicolon or newline or }
prog.go:9: newline in string
prog.go:9: empty character literal or unescaped ' in character literal
prog.go:9: missing '

Ich kann den genauen Grund dafür nicht verstehen, da in Python beispielsweise Perl eine Zeichenfolge mit einem einfachen und einem doppelten Anführungszeichen deklariert werden kann. 

18
shivams

In Go steht '⌘' für ein einzelnes Zeichen (Rune genannt), während "⌘" eine Zeichenfolge darstellt, die das Zeichen enthält. 

Dies trifft in vielen Programmiersprachen zu, in denen der Unterschied zwischen Zeichenfolgen und Zeichen deutlich ist, beispielsweise in C++.

Lesen Sie den Abschnitt "Codepunkte, Zeichen und Runen" im Go Blog on Strings

48
ti7

Go ist eine statisch typisierte Sprache. Auch GO ist keine Skriptsprache. Obwohl wir sehen, dass GO wie eine Skriptsprache läuft, kompiliert sie die Quelle, die wir schreiben, und führt dann die Hauptfunktion aus. Daher sollten wir GO als C, Java, C++ behandeln, wobei das einfache Anführungszeichen '' zur Deklaration von Zeichen (rune, char) verwendet wird, im Gegensatz zu Skriptsprachen wie Python oder JavaScript. 

Ich denke, da dies eine neue Sprache ist und der aktuelle Trend bei Skriptsprachen liegt, ist diese Verwirrung aufgetreten. 

1