Pemulaan Slice Kosong: Menilai Dua Pendekatan
Untuk memulakan kepingan kosong dengan saiz tidak tetap, dua kaedah biasa digunakan:
mySlice1 := make([]int, 0) mySlice2 := []int{}
Meneroka perbezaan antara pendekatan ini adalah penting untuk mengoptimumkan prestasi kod dan memahami memori pengurusan dalam Go.
Implikasi Runtime
make([]int, 0) secara eksplisit memanggil fungsi runtime.makeslice secara dalaman (Go 1.16). Ini melibatkan memperuntukkan memori untuk pengepala kepingan dan tatasusunan sokongan, walaupun ia memulakan panjang kepingan kepada sifar. Ia juga menetapkan kapasiti hirisan kepada saiz yang diperuntukkan.
Slice Nil: Pilihan Ketiga
Alternatif lain ialah mencipta kepingan nil:
var mySlice []int
Sekeping sifar adalah bersamaan dengan keping sifar panjang dalam fungsi. Walau bagaimanapun, ia tidak menunjuk kepada mana-mana data asas.
Pertimbangan JSON Marshaling
Adalah diperhatikan bahawa kepingan kosong dan kepingan kosong mempunyai gelagat berbeza apabila JSON-marshaled. Sekeping sifar menjadi "null", manakala sekeping kosong menjadi "[]".
Peruntukan Memori
Tiada kaedah yang disebutkan, buat([] int, 0), []int{}, atau mencipta kepingan nol, menyebabkan peruntukan memori.
Disyorkan Pendekatan
Akhirnya, pilihan pendekatan yang hendak digunakan bergantung pada keperluan dan keutamaan tertentu. Pertimbangkan perkara berikut:
Atas ialah kandungan terperinci Go Empty Slice Initialization: `make([]int, 0)` lwn. `[]int{}` lwn. `nil` – Mana Yang Terbaik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!