在Go中解引用指针

我对第15行无效的原因感到困惑。为什么不能取消指向big.Int的指针,而可以取消指向int的指针?


package main


import (

    "fmt"

    "big"

)


func main() {

    var c *int = getPtr()

    fmt.Println(c)

    fmt.Println(*c)


    var d *big.Int = big.NewInt(int64(0))

    fmt.Println(d)


    // does not compile - implicit assignment of big.Int

    // field 'neg' in function argument

    //fmt.Println(*d)

}


func getPtr() *int {

    var a int = 0

    var b *int = &a

    return b

}


白衣染霜花
浏览 263回答 1
1回答

慕无忌1623718

这是因为Int是具有未导出字段的结构。当按值将结构传递给函数时,就是在对其进行复制。在围棋规范指出,这个是合法的...要么必须导出T的所有字段,要么赋值必须在声明T的同一包中。换句话说,仅当程序的每个字段都可以合法地分配结构的每个字段时,才可以将结构值分配给结构变量。
打开App,查看更多内容
随时随地看视频慕课网APP