为什么在printfl中使用+号?

时间:2018-01-12 23:57:51

标签: go

有什么区别:

var x float64 = 3.141592
fmt.Println("the value is" + x)

var x float64 = 3.141592
fmt.Println("the value is", x)

+的含义是什么?

为什么第一个错误而第二个错误?

1 个答案:

答案 0 :(得分:2)

fmt.Println是一个可变参数函数,其参数是通用接口。任何类型都可以实现这种干扰,包括字符串和浮点数。第二个例子就是出于这个原因。

然而,第一个例子涉及二元运算符+。正如https://golang.org/ref/spec#Operators所述,二元运算符的工作方式相同。这意味着您无法添加"浮点到字符串而不先显式地转换为字符串。

一般来说,这是golang发明者做出的决定。如果你阅读了go的设计原则,我想你会发现它很好地对齐。但就你的问题而言,可以说,它是如何工作的。