gpt4 book ai didi

pointers - 在 Go 中取消引用指针

转载 作者:IT王子 更新时间:2023-10-29 00:43:08 24 4
gpt4 key购买 nike

我对为什么第 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
}

最佳答案

这是因为 Int 是具有未导出字段的结构。当您按值将结构传递给函数时,您正在制作它的副本。 Go spec声明这是合法的

...either all fields of T must be exported, or the assignment must be in the same package in which T is declared. In other words, a struct value can be assigned to a struct variable only if every field of the struct may be legally assigned individually by the program.

关于pointers - 在 Go 中取消引用指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2388909/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com