我正在学习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可以声明一个包含单引号和双引号的字符串。
答案 0 :(得分:57)
在Go中,'⌘'
表示单个字符(称为符文),而"⌘"
表示包含字符⌘
的字符串。
在许多编程语言中都是如此,其中字符串和字符之间的区别是显着的,例如C ++。
中的“代码点,字符和符文”部分答案 1 :(得分:1)
另一种选择,如果您想嵌入双引号:
package main
func main() {
s := `west "north" east`
println(s)
}
答案 2 :(得分:0)
Go是一种静态类型的语言。 GO
也不是脚本语言。尽管我们看到GO
像脚本语言一样运行,但是它正在编译我们编写的源代码,然后执行主要功能。因此,我们应该将GO
视为C, JAVA, C++
,其中使用单引号''
来声明字符(rune, char
),这与Python或JavaScript等脚本语言不同。
我认为这是一种新语言,而当前的趋势是脚本语言,这种混乱已经发生了。