Booleschen Zeiger in Strukturliteralen auf True setzen
Frage:
Eine Funktion erfordert a Zeiger auf einen booleschen Wert. Kann ein Strukturliteral verwendet werden, um das Feld auf true zu setzen, ohne zusätzliche Variablen einzuführen?
Antwort:
Ja, es ist möglich, aber nicht ideal:
h := handler{is: &[]bool{true}[0]}
Diese Lösung erstellt ein Slice mit einem einzelnen booleschen Wert von „true“, indiziert sein erstes Element und weist seine Adresse dem is-Feld zu. Während neue Variablen vermieden werden, stellen die Boilerplate und die Persistenz des Backing-Arrays Nachteile dar.
Bessere Lösungen:
func newTrue() *bool { b := true return &b }
h := handler{is: newTrue()}
h := handler{is: func() *bool { b := true; return &b }()}
h := handler{is: func(b bool) *bool { return &b }(true)}
Weitere Optionen finden Sie unter „ Wie erstelle ich ein Literal *int64 in Go?".
Das obige ist der detaillierte Inhalt vonKann ein Go-Strukturliteral ohne zusätzliche Variablen direkt einen echten booleschen Zeiger zuweisen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!