【问题标题】:BigInt pointer in GoGo 中的 BigInt 指针
【发布时间】: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

标签: pointers go bigint


【解决方案1】:
fmt.Printf("%p\n", target)      // 0xc00000c080

【讨论】:

  • 目标持有哪个值?“0xc000000c080”还是1?
  • 它在地址前打印了“1”。这个地址“围绕”它打印的第一个地址。我的测试只是添加了一行的示例的复制和粘贴。
猜你喜欢
  • 2016-07-12
  • 2015-12-18
  • 2016-03-20
  • 2021-11-02
  • 2014-02-16
  • 1970-01-01
  • 1970-01-01
  • 2016-08-15
  • 2021-04-10
相关资源
最近更新 更多