【发布时间】:2020-09-23 10:25:20
【问题描述】:
我在玩各种包和数据类型,我从“math/big”包中发现了这个函数(big.NewInt())。所以这个函数返回一个指向 bigInt 类型的指针,但是当我打印出来时,我得到的是实际值而不是它的存储地址,谁能帮我更好地理解这一点?
package main
import "fmt"
import "math/big"
import "reflect"
func main(){
target := big.NewInt(1)
a := 5
s := &a
fmt.Println(reflect.TypeOf(target))
fmt.Println(reflect.TypeOf(s))
fmt.Println(s)
fmt.Println(target)
}
【问题讨论】:
-
这是 fmt 的一个特性。它调用适当的 String 函数,与指针或 big.Int 无关。
-
但是如果是整数指针而不是大整数指针,它会自动打印地址
-
@Chandru: 因为
*int没有String()方法使其成为fmt.Stringer。