Heim > Backend-Entwicklung > Golang > Wie kann ich einen Bool-Zeiger innerhalb eines Go-Strukturliterals effizient auf True setzen?

Wie kann ich einen Bool-Zeiger innerhalb eines Go-Strukturliterals effizient auf True setzen?

DDD
Freigeben: 2024-12-02 09:21:12
Original
156 Leute haben es durchsucht

How Can I Efficiently Set a Bool Pointer to True within a Go Struct Literal?

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})
}
Nach dem Login kopieren

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]}
Nach dem Login kopieren

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
}
Nach dem Login kopieren

Mit dieser Funktion wird das Setzen des Bool-Zeigers im Strukturliteral zu:

h := handler{is: newTrue()}
Nach dem Login kopieren

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 }()}
Nach dem Login kopieren

Option 4: Variante mit anonymer Funktion

Eine leichte Variation des vorherigen Ansatzes:

h := handler{is: func(b bool) *bool { return &b }(true)}
Nach dem Login kopieren

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!

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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage