在下面的代码中为什么n要修改的值?(游乐场链接)
package main
import (
"fmt"
"math/big"
)
func main() {
n := big.NewInt(5)
nCopy := new(big.Int)
*nCopy = *n
// The values of "n" and "nCopy" are expected to be the same.
fmt.Println(n.String(), nCopy.String(), &n, &nCopy)
nCopy.Mod(nCopy, big.NewInt(2))
// The values of "n" and "nCopy", I would think, should be different.
fmt.Println(n.String(), nCopy.String(), &n, &nCopy)
}
阅读这个答案似乎是说我示例中的第三行main()应该复制n. 两个Println语句中输出的两个变量的地址似乎也表明这两个big.Ints存储在不同的内存位置。
我意识到*nCopy = *n我可以使用而不是使用nCopy.Set(n)我的最终结果Println会显示我期望的结果。但我很好奇为什么*nCopy = *n似乎保留了两个指针之间的“链接”。
翻翻过去那场雪
相关分类