web-dev-qa-db-fra.com

Impossible d'affecter une chaîne avec un guillemet simple en golang

J'apprends à aller et quand je joue avec des cordes, j'ai remarqué que si une chaîne est entre guillemets simples, alors golang me donne une erreur, mais les guillemets doubles fonctionnent bien. 

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

C'est l'erreur que j'ai sur mon système:

illegal rune literal

Même si j'essaie de faire la même chose sur un terrain de jeu, j'obtiens cette erreur:

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 '

Je ne suis pas en mesure de comprendre la raison exacte derrière cela, comme par exemple dans Python, Perl permet de déclarer une chaîne avec des guillemets simples et doubles. 

18
shivams

Dans Go, '⌘' représente un seul caractère (appelé une rune), alors que "⌘" représente une chaîne contenant le caractère

Cela est vrai dans de nombreux langages de programmation où la différence entre les chaînes et les caractères est notable, tels que C++.

Consultez la section "Points de code, personnages et runes" dans le répertoire Go Blog on Strings

48
ti7

Go est un langage statiquement typé. De plus, GO n'est pas un langage de script. Bien que nous voyions que GO fonctionne comme un langage de script, il compile la source que nous écrivons puis exécute la fonction principale. Donc, nous devrions traiter GO comme C, Java, C++ où guillemet seul '' est utilisé pour déclarer des caractères (rune, char) contrairement aux langages de script tels que Python ou JavaScript. 

Je pense qu’il s’agit d’un nouveau langage et que la tendance actuelle ment avec les langages de script, cette confusion s’est produite. 

1