我使用的是 go1.17 而不是 1.18,所以 go 1.18 中的答案可能对其他人有帮助,但对我没有帮助。
我搜索并尝试了很多东西,但这种情况从未解决。
import (
"fmt"
"reflect"
)
func main() {
l := map[string][]interface{}{"a": {}}
appendData(l["a"])
fmt.Println(l["a"])
}
func appendData(k interface{}) {
lValue := reflect.ValueOf(k)
lValue.Set(reflect.Append(lValue, reflect.ValueOf(1)))
lValue.Set(reflect.Append(lValue, reflect.ValueOf(2)))
lValue.Set(reflect.Append(lValue, reflect.ValueOf(3)))
}
我将场景简化为这段代码。
我只需要能够更改[]interface{}从appendData函数传递的 interfaces() 切片的元素。
请不要将这行代码发送给我l["a"] = appendData(l["a"]).([]interface{})。
我知道这行得通,但由于某种原因我无法在我的代码中实现它。(我正在做一些 BFS 的东西但我不能这样做,我当时必须更改一些值)
我想要的是?
我只想看到这个输出:
[1, 2, 3]
可能吗?
是否有任何其他替代方法可以从我的代码中的其他地方更改这些数据?
谢谢你的帮助。
梦里花落0921
相关分类