是否可以从现有参考创建切片?

时间:2017-05-21 14:21:33

标签: go

假设我有以下功能:

func foo(bar []int) {
    bar[0] = 456
}

我想创建一个[]int,其中一个元素引用a,这样当我:

var a int = 10
// mySlice := ... crazy hackery?
foo(mySlice)

a的值为456。

我知道这是疯狂和愚蠢的,而且根本不是正确的事情。我不是在寻找“正确”的方式。 foo的函数原型必须保持不变。

我可以保证,虽然基础int会发生变化,但指向它的切片是不可变的。

奇怪要求的原因是因为这是c2go project

1 个答案:

答案 0 :(得分:0)

您可以通过unsafe.Pointer投射所需的任何类型。

首先将*int转换为指向数组的指针,然后将其切片:

(*[1]int)(unsafe.Pointer(&a))[:]

https://play.golang.org/p/bmKcMIj3pb