假設我使用的是 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]可能嗎?是否有任何其他替代方法可以從我的代碼中的其他地方更改這些數據?謝謝你的幫助。
如何通過反射將映射值附加到切片?
慕桂英4014372
2022-12-19 14:10:25