Pointers 围棋中的BigInt指针

Pointers 围棋中的BigInt指针,pointers,go,bigint,Pointers,Go,Bigint,我在玩各种包和数据类型时,从“math/big”包中发现了这个函数(big.NewInt())。所以这个函数返回一个指向bigInt类型的指针,但是当我打印出来时,我得到的是实际值,而不是它存储的地址。有人能帮我更好地理解这个吗 package main import "fmt" import "math/big" import "reflect" func main(){ target := big.NewInt(1) a := 5 s := &a

我在玩各种包和数据类型时,从“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的一个特点。它调用适当的字符串函数,与e指针或big.Int无关。但是y是否会在整数指针的情况下自动打印地址,而不是在大Int的情况下打印地址pointer@Chandru:因为
*int
没有
字符串()
使其成为
fmt.Stringer
的方法。目标持有哪个值?“0xc000000c080”或1?它在地址前打印“1”。这个地址就在它打印的第一个地址附近。我的测试只是复制并粘贴了您的示例,添加了一行。
fmt.Printf("%p\n", target)      // 0xc00000c080