有什么区别:
var x float64 = 3.141592
fmt.Println("the value is" + x)
和
var x float64 = 3.141592
fmt.Println("the value is", x)
+
的含义是什么?
为什么第一个错误而第二个错误?
答案 0 :(得分:2)
fmt.Println是一个可变参数函数,其参数是通用接口。任何类型都可以实现这种干扰,包括字符串和浮点数。第二个例子就是出于这个原因。
然而,第一个例子涉及二元运算符+
。正如https://golang.org/ref/spec#Operators所述,二元运算符的工作方式相同。这意味着您无法添加"浮点到字符串而不先显式地转换为字符串。
一般来说,这是golang发明者做出的决定。如果你阅读了go的设计原则,我想你会发现它很好地对齐。但就你的问题而言,可以说,它是如何工作的。