拥有此代码
import (
"fmt"
"math/big"
)
func main() {
var b1,b2,b3,bigSum big.Float
b1.SetFloat64(25.3)
b2.SetFloat64(76.2)
b1.SetFloat64(53.1)
bigSum.Add(&b1, &b2).Add(&b3, &bigSum)
fmt.Println(bigSum) // {53 0 0 1 false [9317046909104082944] 8}
fmt.Println(&bigSum) // 129.3
}
我有两个问题
为什么我必须将bigSum
作为参考(使用&
)来获取正确的答案,否则我们会找回一个对象?< / p>
Println
如何在Go中运作?我的意思是它如何知道它应该适用于不同类型的格式?
答案 0 :(得分:8)
Println
确定该值是否实现Stringer
接口。如果是,则会调用String()
来获取格式化值。 big.Float
为指针接收器实现它,因此您必须传递引用。否则Println
将检测到它是一个结构并使用反射打印所有字段