2016-01-09 12 views
9

Uczę się go i kiedy grasz z ciągiem zauważyłem, że jeśli ciąg jest w pojedynczym cudzysłowie, golang daje błąd, ale podwójne cytaty działają poprawnie.Nie mogę przypisać ciągów z pojedynczym cudzysłowem w golang

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

Jest to błąd pojawia się w moim systemie

illegal rune literal 

zaś gdy próbuję zrobić to samo na placu zabaw otrzymuję ten błąd

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 ' 

nie jestem w stanie zrozumieć dokładną przyczynę tego, jak w przypadku ex python, perl można zadeklarować ciąg z pojedynczym i podwójnym cudzysłowem.

+3

Inne języki traktuje każde non-spacje jako komentarz i wszystkie słowa są wykonane ze spacjami, zakładek i nowych linii. "Inne języki" to dobry argument, nie dla języków programowania, a nie dla języków naturalnych. – Volker

Odpowiedz

31

W aplikacji Go, '⌘' reprezentuje pojedynczy znak (nazywany Runą), natomiast "⌘" reprezentuje ciąg znaków zawierający znak .

Dotyczy to wielu języków programowania, w których wyróżnia się różnica między ciągami znaków i znakami, np. C++.

Sprawdź punkty Code „znaki i runy” sekcja w Go Blog on Strings

+4

Możesz również użyć "\" bla "tył dla nieprzetworzonego łańcucha znaków. – Datsik

Powiązane problemy