Mengosongkan Slices dalam Go
Coretan kod yang disediakan menunjukkan satu pendekatan untuk "mengosongkan" kepingan dengan menetapkan panjangnya kepada 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)) }
Walaupun pendekatan ini kelihatan mengosongkan kandungan hirisan, ia tidak melepaskan memori asas yang dikaitkan dengan hirisan kepada pengumpul sampah. Untuk benar-benar membersihkan kepingan dan menuntut semula ingatannya, amalan terbaik ialah menetapkannya kepada nihil:
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)) }
Menetapkan hirisan kepada nihil mempunyai beberapa faedah:
Adalah penting untuk ambil perhatian bahawa menukar kapasiti kepingan kepada sifar tidak mengosongkan kepingan atau melepaskan memori asas. Walau bagaimanapun, menetapkan hirisan kepada sifar berkesan mengalih keluar sebarang memori yang diperuntukkan dan menetapkan semula hirisan kepada keadaan asalnya.
Atas ialah kandungan terperinci Bagaimanakah cara saya benar-benar mengosongkan kepingan dalam Go dan menuntut semula ingatannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!