Bool-Zeiger in einem Strukturliteral setzen
Wenn in Go ein Zeiger auf einen Bool-Wert an eine Funktion übergeben wird, ist es möglich, den zu setzen Wert des Bool-Feldes im Strukturliteral direkt. Die Standardsyntax erfordert jedoch die Definition eines neuen Bezeichners, wie unten gezeigt:
func check(is handler){} type handler struct{ is *bool } func main() { var x bool = true check(handler{is: &x}) }
Um diese Anforderung zu umgehen und den Bool-Zeiger direkt im Strukturliteral auf true zu setzen, gibt es mehrere Ansätze:
Option 1: Verwenden eines Slice
Diese Methode erstellt ein Slice mit einem einzelnen Bool mit dem Wert „true“ und indiziert sein erstes Element und nimmt seine Adresse an:
h := handler{is: &[]bool{true}[0]}
Während diese Technik die Definition einer neuen Variablen vermeidet, führt sie unnötige Boilerplate ein und hinterlässt ein Hintergrundarray im Speicher.
Option 2: Verwenden eine Hilfsfunktion
Eine optimalere Lösung besteht darin, eine Hilfsfunktion zu erstellen, die einen Bool-Zeiger mit einem wahren Wert generiert Wert:
func newTrue() *bool { b := true return &b }
Mit dieser Funktion wird das Setzen des Bool-Zeigers im Strukturliteral zu:
h := handler{is: newTrue()}
Option 3: Verwendung einzeiliger anonymer Funktionen
Eine andere Methode besteht darin, anonyme Funktionen zu verwenden, um dieselbe Aufgabe auf einmal zu erledigen Zeile:
h := handler{is: func() *bool { b := true; return &b }()}
Option 4: Variante mit anonymer Funktion
Eine leichte Variation des vorherigen Ansatzes:
h := handler{is: func(b bool) *bool { return &b }(true)}
Diese Techniken bieten Alternativen zum Setzen eines Bool-Zeigers auf „True“ in einem Strukturliteral, ohne dass zusätzliche Bezeichner oder unnötiger Overhead erforderlich sind. Entwickler können den Ansatz wählen, der ihren Bedürfnissen und Stilvorlieben am besten entspricht.
Das obige ist der detaillierte Inhalt vonWie kann ich einen Bool-Zeiger innerhalb eines Go-Strukturliterals effizient auf True setzen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!