In Go kann die Zuweisung von Werten zu Zeigern innerhalb von Strukturliteralen schwierig sein. Insbesondere das Setzen eines Bool-Zeigers auf „true“ kann eine Problemumgehung erfordern.
Betrachten Sie die folgende Funktion, die einen Bool-Zeiger akzeptiert:
import "fmt" func main() { fmt.Println("Hello, playground") check(handler{is: new(bool)}) } type handler struct{ is *bool } func check(is handler){}
Um das is-Feld im Strukturliteral auf „true“ zuzuweisen, Man könnte annehmen, dass eine einfache Notation existiert:
handler{is: &true} // This is invalid
Leider ist dies keine gültige Go-Syntax. Um den Bool-Zeiger auf „true“ zu setzen, ist eine Problemumgehung erforderlich.
Eine Methode besteht darin, ein Slice zu erstellen, das einen einzelnen Bool-Wert von „true“ enthält, und sein erstes Element zu indizieren:
h := handler{is: &[]bool{true}[0]} fmt.Println(*h.is) // Prints true
Auf diese Weise können Sie zwar den Zeiger auf „true“ setzen, es wird jedoch unnötigerweise ein Slice-Array erstellt, das im Speicher verbleibt, bis die Adresse auf den ersten Wert gesetzt wird Element wird gelöscht.
Eine sauberere Lösung besteht darin, eine Hilfsfunktion zu erstellen, die einen Zeiger auf eine bool-Variable zurückgibt, die auf true initialisiert ist:
func newTrue() *bool { b := true return &b }
Dies Die Funktion kann dann im Strukturliteral verwendet werden:
h := handler{is: newTrue()} fmt.Println(*h.is) // Prints true
Andere Optionen, um den Zeiger auf true zu setzen, umfassen anonyme Funktionen:
h := handler{is: func() *bool { b := true; return &b }()} fmt.Println(*h.is) // Prints true
Oder Variante:
h := handler{is: func(b bool) *bool { return &b }(true)}
Diese ermöglichen eine prägnante Syntax, können es aber sein weniger lesbar als der Hilfsfunktionsansatz.
Beim Setzen eines Bool-Zeigers In Strukturliteralen auf „true“ zu setzen mag wie eine einfache Aufgabe erscheinen, sie erfordert jedoch eine bestimmte Syntax oder die Verwendung einer Problemumgehung. Die Kenntnis dieser Methoden ermöglicht es Go-Programmierern, Zeigern in verschiedenen Situationen effektiv Werte zuzuweisen.
Das obige ist der detaillierte Inhalt vonWie weist man einem Bool-Zeiger in Go-Struct-Literalen „True' zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!