Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah saya boleh memulakan tatasusunan dalam Go tanpa menggunakan gelung for?
Memulakan Tatasusunan dalam Go Without For Loop
Apabila bekerja dengan tatasusunan dalam Go, selalunya perlu untuk memulakan nilainya. Kaedah yang paling mudah ialah menggunakan gelung for, seperti yang dilihat dalam contoh berikut:
<code class="go">for i := 0; i < n; i++ { A[i] = true }</code>
Walau bagaimanapun, pendekatan ini boleh menjadi membosankan untuk tatasusunan yang besar. Nasib baik, terdapat beberapa alternatif yang tersedia.
Huruf Komposit
Huruf gabungan membolehkan anda mencipta dan memulakan tatasusunan dan kepingan dengan cara yang lebih ringkas:
<code class="go">b1 := []bool{true, true, true} b2 := [3]bool{true, true, true}</code>
Perhatikan bahawa literal komposit akan sentiasa memulakan tatasusunan kepada nilai sifar untuk jenis yang diberikan. Dalam kes bool, ini bermakna semua nilai akan menjadi palsu.
Menggunakan Pemalar
Jika anda ingin memulakan semua elemen kepada nilai tertentu (mis., benar ), anda boleh memperkenalkan pemalar dan menggunakannya dalam literal komposit:
<code class="go">const T = true b3 := []bool{T, T, T}</code>
Logik Alternatif
Dalam situasi tertentu, ia boleh menjadi lebih cekap untuk menyimpan songsang nilai yang dikehendaki dalam tatasusunan. Ini membolehkan anda memanfaatkan kelakuan tatasusunan sifar lalai:
<code class="go">presents := []bool{true, true, true, true, true, true} // Equivalent to: missings := make([]bool, 6) // All false (not missing)</code>
Operasi "memset" yang cekap
Jika prestasi adalah kritikal, anda boleh mempertimbangkan untuk menggunakan yang berikut pelaksanaan operasi memset:
<code class="go">import ( "bytes" "unsafe" ) func memset(p []interface{}, v interface{}) { b := bytes.NewBuffer(make([]byte, unsafe.Sizeof(v))) b.Reset() for i := range p { b.Write(b.Bytes()) copy(p[i:i+1], *(*[]byte)(unsafe.Pointer(&v))) } }</code>
Pendekatan ini amat berkesan untuk tatasusunan besar.
Atas ialah kandungan terperinci Bagaimanakah saya boleh memulakan tatasusunan dalam Go tanpa menggunakan gelung for?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!