gpt4 book ai didi

go - 是否可以根据现有引用创建 slice ?

转载 作者:IT王子 更新时间:2023-10-29 02:21:57 26 4
gpt4 key购买 nike

假设我有以下功能:

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

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

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

a 的值为 456。


我知道这是疯狂和愚蠢的,根本不是正确的做法。我不是在寻找“正确”的方式。 foo 的函数原型(prototype)必须保持不变。

我可以保证虽然底层 int 会改变,但指向它的 slice 是不可变的。

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

最佳答案

您可以通过 unsafe.Pointer 转换任何类型。

首先将 *int 转换为指向数组的指针,然后对其进行 slice :

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

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

关于go - 是否可以根据现有引用创建 slice ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44097977/

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