假设我有以下功能:
func foo(bar []int) {
bar[0] = 456
}
我想创建一个[]int
,其中一个元素引用a
,这样当我:
var a int = 10
// mySlice := ... crazy hackery?
foo(mySlice)
a
的值为456。
我知道这是疯狂和愚蠢的,而且根本不是正确的事情。我不是在寻找“正确”的方式。 foo
的函数原型必须保持不变。
我可以保证,虽然基础int
会发生变化,但指向它的切片是不可变的。
奇怪要求的原因是因为这是c2go project。
答案 0 :(得分:0)
您可以通过unsafe.Pointer
投射所需的任何类型。
首先将*int
转换为指向数组的指针,然后将其切片:
(*[1]int)(unsafe.Pointer(&a))[:]