루프 반복 중에 구조체 내의 요소를 조작함에도 불구하고 루프 종료 시 업데이트가 유지되지 않습니다. 올바른 구조체 조작을 위해서는 이 동작의 이유를 이해하는 것이 중요합니다.
구조체 슬라이스를 반복할 때 루프 변수는 요소 자체가 아닌 원본 요소의 복사본을 참조합니다. . 따라서 루프 내 수정 사항은 사본에만 영향을 미치고 슬라이스의 실제 요소에는 영향을 미치지 않습니다.
구조 요소를 성공적으로 업데이트하려면 다음 접근 방식을 사용할 수 있습니다.
다음은 솔루션을 따르는 업데이트된 코드 조각입니다.
type FTR struct { Id string Mod []Mod } type Mod struct { Name string Type string } for index := range ftr.Mod { switch ftr.Mod[index].Type { case "aaa", "bbbb": ftr.Mod[index].Type = "cccc" case "htr": ftr.Mod[index].Type = "com" case "no": ftr.Mod[index].Type = "jnodejs" case "jdb": ftr.Mod[index].Type = "tomcat" } }
이를 채택하여 접근 방식을 사용하면 구조체 요소가 성공적으로 업데이트되고 루프가 종료된 후에도 변경 사항이 유지됩니다.
위 내용은 Go 루프에서 내 구조체 업데이트가 지속되지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!