Rumah > pembangunan bahagian belakang > Golang > Go Empty Slice Initialization: `make([]int, 0)` lwn. `[]int{}` lwn. `nil` – Mana Yang Terbaik?

Go Empty Slice Initialization: `make([]int, 0)` lwn. `[]int{}` lwn. `nil` – Mana Yang Terbaik?

Barbara Streisand
Lepaskan: 2024-12-29 09:08:09
asal
845 orang telah melayarinya

Go Empty Slice Initialization: `make([]int, 0)` vs. `[]int{}` vs. `nil` – Which is Best?

Pemulaan Slice Kosong: Menilai Dua Pendekatan

Untuk memulakan kepingan kosong dengan saiz tidak tetap, dua kaedah biasa digunakan:

mySlice1 := make([]int, 0)
mySlice2 := []int{}
Salin selepas log masuk

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
Salin selepas log masuk

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:

  • Prestasi: Jika mengoptimumkan prestasi masa jalan adalah keutamaan, menggunakan make([]int, 0) mungkin lebih cekap.
  • Peruntukan Memori: Apabila meminimumkan peruntukan memori adalah penting, sekeping sifar adalah yang terbaik pilihan.
  • JSON Marshaling: Jika tingkah laku marshaling JSON adalah penting, pertimbangkan output yang diingini dan gunakan make([]int, 0) atau []int{} dengan sewajarnya.

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan