Go에서 슬라이스 지우기
제공된 코드 조각은 슬라이스 길이를 0으로 설정하여 슬라이스를 "삭제"하는 한 가지 접근 방식을 보여줍니다.
package main import "fmt" func main() { letters := []string{"a", "b", "c", "d"} fmt.Println(cap(letters)) fmt.Println(len(letters)) // clear the slice letters = letters[:0] fmt.Println(cap(letters)) fmt.Println(len(letters)) }
이 접근 방식은 슬라이스의 내용을 지우는 것처럼 보일 수 있지만 해제되지는 않습니다. 슬라이스와 연관된 기본 메모리를 가비지 수집기로 보냅니다. 슬라이스를 완전히 지우고 메모리를 회수하려면 nil으로 설정하는 것이 가장 좋습니다.
package main import "fmt" func main() { letters := []string{"a", "b", "c", "d"} fmt.Println(cap(letters)) fmt.Println(len(letters)) // clear the slice letters = nil fmt.Println(cap(letters)) fmt.Println(len(letters)) }
슬라이스를 nil로 설정하면 여러 가지 이점이 있습니다.
슬라이스의 용량을 0으로 변경해도 지워지지 않는다는 점에 유의하는 것이 중요합니다. 기본 메모리를 슬라이스하거나 해제합니다. 그러나 슬라이스를 nil로 설정하면 할당된 메모리가 효과적으로 제거되고 슬라이스가 초기 상태로 재설정됩니다.
위 내용은 Go에서 슬라이스를 실제로 지우고 메모리를 되찾으려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!