无法在golang中为单引号分配字符串

时间:2016-01-09 07:48:10

标签: string go

我正在学习go并且在使用字符串时我注意到如果字符串是单引号,那么golang会给我一个错误,但双引号工作正常。

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

这是我在系统上遇到的错误:

illegal rune literal

当我尝试在操场上做同样的事情时,我收到了这个错误:

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 '

我无法理解这背后的确切原因,例如Python,Perl可以声明一个包含单引号和双引号的字符串。

3 个答案:

答案 0 :(得分:57)

在Go中,'⌘'表示单个字符(称为符文),而"⌘"表示包含字符的字符串。

在许多编程语言中都是如此,其中字符串和字符之间的区别是显着的,例如C ++。

查看Go Blog on Strings

中的“代码点,字符和符文”部分

答案 1 :(得分:1)

另一种选择,如果您想嵌入双引号:

package main

func main() {
   s := `west "north" east`
   println(s)
}

https://golang.org/ref/spec#raw_string_lit

答案 2 :(得分:0)

Go是一种静态类型的语言。 GO也不是脚本语言。尽管我们看到GO像脚本语言一样运行,但是它正在编译我们编写的源代码,然后执行主要功能。因此,我们应该将GO视为C, JAVA, C++,其中使用单引号''来声明字符(rune, char),这与Python或JavaScript等脚本语言不同。

我认为这是一种新语言,而当前的趋势是脚本语言,这种混乱已经发生了。