Heim > Backend-Entwicklung > Golang > Hat die Übergabe von „this' als Wert Auswirkungen auf die Leistung in Go-Methoden?

Hat die Übergabe von „this' als Wert Auswirkungen auf die Leistung in Go-Methoden?

Patricia Arquette
Freigeben: 2024-12-19 17:27:10
Original
736 Leute haben es durchsucht

Does Passing

Vermindert die Übergabe von „this“ als Wert die Leistung in Go-Methoden?

Im Gegensatz zu C, wo durch Werte übergebene Funktionsargumente zu einer erheblichen Leistung führen können Da die Methodenempfänger von Go keine Strafen aufgrund des variablen Kopierens erhalten, folgen sie einem anderen Paradigma.

In Go sind Methodenempfänger bloße syntaktische Annehmlichkeiten. Wie unten gezeigt:

type Something struct {
    Value int
}

func (s *Something) ChangeValue(n int) {
    s.Value = n
}

func main() {
    o := new(Something)
    fmt.Println(o.Value)           // Prints 0
    o.ChangeValue(8)             // Changes o's value to 8
    fmt.Println(o.Value)           // Prints 8
    (*Something).ChangeValue(o, 16) // Same as calling o.ChangeValue(16)
    fmt.Println(o.Value)           // Prints 16
}
Nach dem Login kopieren

Beachten Sie, dass der Empfänger s in ChangeValue ein Zeiger ist, wodurch er einer Referenz in C ähnelt. Wenn der Empfänger ein Werttyp wäre, würde er keine Wertmutation zulassen.

Daher stellt der Zeigerempfängeransatz von Go die Kapselung sicher und verhindert das Kopieren der gesamten „diesen“ Instanz, im Gegensatz zu den in C/C beobachteten Leistungseinbußen zum Übergeben von Argumenten nach Wert.

Das obige ist der detaillierte Inhalt vonHat die Übergabe von „this' als Wert Auswirkungen auf die Leistung in Go-Methoden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage