„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie kann ich Arrays in GO effizient initialisieren, ähnlich wie das Memset von C ++?

Wie kann ich Arrays in GO effizient initialisieren, ähnlich wie das Memset von C ++?

Gepostet am 2025-02-06
Durchsuche:774

How Can I Efficiently Initialize Arrays in Go, Similar to C  's memset?

Gibt es ein Äquivalent von memset in go?

In C ermöglicht die Memset -Funktion die effiziente Initialisierung von Arrays mit bestimmten Werten. Während es kein direktes Äquivalent gibt, können mehrere Techniken ähnliche Ergebnisse erzielen.

Loop Iteration

Der einfachste Ansatz ist die Verwendung eines Schleife, um jedes Element von festzulegen ein Array zum gewünschten Wert.

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

wiederholte copy ()

nutzen die hoch optimierte Copy () -Funktion, wir können ein wiederholtes Kopiermuster nutzen, um Array -Werte effizient festzulegen.

.
func memsetRepeat(a []int, v int) {
    if len(a) == 0 {
        return
    }
    a[0] = v
    for bp := 1; bp  func memsetrepeat (a [] int, v int) {
    Wenn Len (a) == 0 {
        zurückkehren
    }
    a [0] = v
    für BP: = 1; bp    Benchmark -Ergebnisse  

Um die Leistung dieser Techniken zu beurteilen, bewerten wir sie gegeneinander für verschiedene Array -Größen.
var a = make([]int, 1000) // Size will vary

func BenchmarkLoop(b *testing.B) {
    for i := 0; i  var a = make make make make ([] int, 1000) // Größe variiert

Func Benchmarkloop (B *testing.b) {
    für i: = 0; i   Die Ergebnisse zeigen, dass memsetrepeat () memsetloop () für größere Arrays übertrifft und deren Effizienz für die schnelle Initialisierung demonstriert. 

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3