php 편집기 Baicao는 이 문서에서 Golang의 슬라이스 값 업데이트에 대한 문제에 대해 논의할 것입니다. 슬라이스의 값을 업데이트할 때 컨테이너 개체의 값이 그에 따라 업데이트되지 않는 이유입니다. 이러한 문제는 Golang을 사용하는 개발자들 사이에서 흔히 발생하는 문제이므로, 원인을 파악하고 해결책을 제시해 드리겠습니다. 초보자이건 숙련된 개발자이건 이 글을 읽으면 Golang의 슬라이싱 작업을 더 잘 이해할 수 있을 것입니다.
package main import ( "fmt" ) func main() { root := map[string]interface{} { "disney": "world", } fmt.Printf("main begin %v\n", root) addList(root) fmt.Printf("main after addList %v\n", root) addMap(root) fmt.Printf("main after addMap %v\n", root) } func addList(root map[string]interface{}) { root["list"] = make([]interface{},0,3) mylist := root["list"] mylist = append(mylist.([]interface{}),"mickeymouse") fmt.Printf("addList %v\n", mylist) fmt.Printf("addList %v\n", root) } func addMap(root map[string]interface{}) { root["map"] = make(map[string]interface{}) mymap := root["map"] mymap.(map[string]interface{})["donald"] = "duck" fmt.Printf("addMap %v\n", mymap) fmt.Printf("addMap %v\n", root) }
"disney" -> "world" 쌍을 포함하는 루트 맵이 있습니다. 해당 루트 맵에서 함수 addlist에 "mickeymouse"가 있는 슬라이스를 추가한 다음 함수 addmap에 "donald"->"duck" 쌍이 있는 맵을 추가했습니다. 그러나 슬라이스는 추가되지 않고 루트 맵에 맵이 추가됩니다. 서브매핑은 예상된 동작이지만 슬라이스 추가는 비정상적인 동작인 것 같습니다. 내 생각에 슬라이스는 golang의 지도처럼 참조라고 생각합니다. 어떻게 진행되고 있나요? 자바에서 작동해야합니다. 내가 어디서 잘못됐나요? 어떻게 작동하게 할 수 있나요? 실제 더 큰 문제에서는 함수의 오류 외에는 아무것도 반환할 수 있는 다른 옵션이 없습니다.
append
이 함수는 새 슬라이스를 반환합니다. map
에 값을 저장해도 새 지도가 생성되지 않습니다. 그래서 새로운 타일이 보이지 않는 것은 당연하지만 지도의 콘텐츠가 업데이트되었음을 알 수 있습니다.
어떻게 작동하게 할 수 있나요?
예: 이전 슬라이스 대신 새 슬라이스를 저장합니다. 으아악
위 내용은 golang 업데이트 슬라이스 값이 컨테이너 객체에 반영되지 않았습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!