Rumah > pembangunan bahagian belakang > Golang > Go's Equivalent to C's memset: Bagaimana Memulakan Tatasusunan dengan Cekap dengan Nilai Bukan Sifar?

Go's Equivalent to C's memset: Bagaimana Memulakan Tatasusunan dengan Cekap dengan Nilai Bukan Sifar?

Mary-Kate Olsen
Lepaskan: 2024-12-20 00:38:13
asal
641 orang telah melayarinya

Go's Equivalent to C  's memset: How to Efficiently Initialize Arrays with Non-Zero Values?

Go Equivalent to C's memset

Soalan Asal:

Adakah terdapat kaedah dalam Go yang serupa dengan fungsi memset C, yang membolehkan permulaan yang cekap tatasusunan dengan bukan sifar nilai?

Jawapan:

Go tidak menawarkan persamaan langsung dengan memset dalam perpustakaan standardnya. Walau bagaimanapun, terdapat beberapa pendekatan yang boleh mencapai kefungsian yang serupa:

Penyelesaian Berasaskan Gelung:

func memsetLoop(a []int, v int) {
    for i := range a {
        a[i] = v
    }
}
Salin selepas log masuk

Gelung mudah ini berulang pada tatasusunan dan memberikan nilai v kepada setiap elemen.

Penggunaan Penyelesaian Dioptimumkan copy():

Fungsi copy() Go sangat dioptimumkan dan boleh digunakan untuk tujuan ini:

func memsetRepeat(a []int, v int) {
    if len(a) == 0 {
        return
    }
    a[0] = v
    for bp := 1; bp < len(a); bp *= 2 {
        copy(a[bp:], a[:bp])
    }
}
Salin selepas log masuk

Penyelesaian ini menetapkan elemen pertama secara manual dan kemudian berulang kali menyalin bahagian dimulakan tatasusunan pada elemen yang tinggal.

Prestasi Perbandingan:

Tanda aras menunjukkan bahawa penyelesaian memsetRepeat mengatasi pendekatan berasaskan gelung untuk tatasusunan yang lebih besar disebabkan oleh fungsi copy() yang dioptimumkan.

Untuk meringkaskan, pengaturcara Go boleh menggunakan sama ada penyelesaian berasaskan gelung untuk kesederhanaan atau penyelesaian memsetRepeat yang dioptimumkan untuk prestasi yang lebih baik apabila memulakan tatasusunan dengan bukan sifar nilai.

Atas ialah kandungan terperinci Go's Equivalent to C's memset: Bagaimana Memulakan Tatasusunan dengan Cekap dengan Nilai Bukan Sifar?. 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