


Detaillierte Erläuterung der Verwendung der Switch-Anweisung und der Select-Anweisung in Golang
Dieser Artikel führt Sie hauptsächlich in das Tutorial zur Verwendung von Switch und Select in Golang ein. Der Artikel stellt die Verwendung von Switch-Anweisung und Select-Anweisung ausführlich anhand von Beispielcode vor, der für jeden von gewisser Bedeutung ist In Bezug auf den Wert des Lernens können Freunde in Not dem Herausgeber folgen, um gemeinsam zu lernen.
Dieser Artikel stellt Ihnen hauptsächlich die relevanten Inhalte zur Verwendung von Switch und Select in Golang vor. Er wird als Referenz und zum Lernen geteilt 🎜>
1. Switch-AnweisungDie Switch-Anweisung bietet eine bedingte Ausführungsmethode mit mehreren Zweigen. Jeder Fall kann einen
-Ausdruck
Go wechselt jedes Element in der Reihenfolge von oben nach unten. Der Case-Ausdruck in einer Case-Anweisung wird ausgewertet. Solange festgestellt wird, dass der Ausdruck das gleiche Ergebnis wie der Switch-Ausdruck hat, wird die Case-Anweisung ausgewählt. Der Rest der case-Anweisungen wird ignoriert. Beispielsweise kann die Switch-Anweisung auch Initialisierungswörter enthalten, und ihr Aussehen und ihre Schreibweise sind genau gleich:
var name string ... switch name { case "Golang": fmt.Println("Golang") case "Rust": fmt.Println("Rust") default: fmt.Println("PHP是世界上最好的语言") }
names := []string{"Golang","java","PHP"} switch name:=names[0];name { case "Golang": fmt.Println("Golang") ... default: fmt.Println("Unknown") }
und der allgemeinen Form. Der erste Punkt ist, dass das, was auf das Schlüsselwort case folgt, kein Ausdruck, sondern ein Typbezeichner ist. Ein Typspezifizierer besteht aus mehreren Typliteralen, und mehrere Typliterale werden durch Kommas getrennt. Der zweite Punkt ist, dass sein Schalterausdruck etwas ganz Besonderes ist. Dieser spezielle Ausdruck spielt auch die Rolle der Typzusicherung, aber sein Ausdruck ist sehr speziell, wie zum Beispiel: , wobei v einen Wert vom Typ Schnittstelle
darstellen muss. Dieser Ausdruckstyp kann nur in Typwechselanweisungen vorkommen und nur als Wechselausdrücke dienen. Ein Beispiel für eine Typ-Switch-Anweisung lautet wie folgt:
„
v := 11 switch i := interface{}(v).(type) { case int, int8, int16, int32, int64: fmt.Println("A signed integer:%d. The type is %T. \n", v, i) case uint, uint8, uint16, uint32, uint64: fmt.Println("A unsigned integer: %d. The type is %T. \n", v, i) default: fmt.Println("Unknown!") }
A signed integer:11. The type is int.
2. Select-Anweisung
Die Funktion von Golangs Select ähnelt Select, Poll und Epoll dient der Überwachung des E/A-Vorgangs. Wenn ein E/A-Vorgang auftritt, wird die entsprechende Aktion ausgelöst.
Beispiel:
ch1 := make (chan int, 1) ch2 := make (chan int, 1) ... select { case <-ch1: fmt.Println("ch1 pop one element") case <-ch2: fmt.Println("ch2 pop one element") }
Die break-Anweisung kann auch in der case-Anweisung in der select-Anweisung enthalten sein. Seine Funktion besteht darin, die Ausführung der aktuellen Select-Anweisung sofort zu beenden. Unabhängig davon, ob in der Case-Anweisung, zu der sie gehört, nicht ausgeführte Anweisungen vorhanden sind.
[Verwenden Sie die Auswahl, um den Timeout-Mechanismus zu implementieren]
wie folgt:
beendet
. Anstatt den Lesevorgang von ch immer zu blockieren. Dies implementiert die Timeout-Einstellung für CH-Lesevorgänge.
timeout := make(chan bool, 1) go func() { time.Sleep(time.Second * 10) timeout <- true }() select { case <-pssScanResponseChan: case <-timeout: fmt.PrintIn("timeout!") }
Das Folgende ist interessanter.
Wenn die Select-Anweisung Standard enthält:
ch1 := make (chan int, 1) ch2 := make (chan int, 1) select { case <-ch1: fmt.Println("ch1 pop one element") case <-ch2: fmt.Println("ch2 pop one element") default: fmt.Println("default") }
lautet wie folgt:
ch := make (chan int, 1) ch <- 1 select { case ch <- 2: default: fmt.Println("channel is full !") }
此外,利用default特性,我们可以使用select语句将chan清空,如下:
flag := false for { select { case <-pssScanResponseChan: continue default: flag = true } if true == flag { break } }
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Verwendung der Switch-Anweisung und der Select-Anweisung in Golang. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Das sichere Lesen und Schreiben von Dateien in Go ist von entscheidender Bedeutung. Zu den Richtlinien gehören: Überprüfen von Dateiberechtigungen, Schließen von Dateien mithilfe von Verzögerungen, Validieren von Dateipfaden, Verwenden von Kontext-Timeouts. Das Befolgen dieser Richtlinien gewährleistet die Sicherheit Ihrer Daten und die Robustheit Ihrer Anwendungen.

In PHP8 sind Übereinstimmungsausdrücke eine neue Kontrollstruktur, die unterschiedliche Ergebnisse basierend auf dem Wert des Expression zurückgibt. 1) Es ähnelt einer Switch -Anweisung, gibt jedoch einen Wert anstelle eines Ausführungsanweisungsblocks zurück. 2) Der Match -Ausdruck wird streng verglichen (===), was die Sicherheit verbessert. 3) Es vermeidet mögliche Auslassungen in Switch -Anweisungen und verbessert die Einfachheit und Lesbarkeit des Codes.

Backend Learning Path: Die Erkundungsreise von Front-End zu Back-End als Back-End-Anfänger, der sich von der Front-End-Entwicklung verwandelt, Sie haben bereits die Grundlage von Nodejs, ...

Wie fusioniere ich Array -Elemente mit derselben ID in ein Objekt in JavaScript? Bei der Verarbeitung von Daten begegnen wir häufig die Notwendigkeit, dieselbe ID zu haben ...

Die Verwendung vordefinierter Zeitzonen in Go umfasst die folgenden Schritte: Importieren Sie das Paket „time“. Laden Sie eine bestimmte Zeitzone über die LoadLocation-Funktion. Verwenden Sie die geladene Zeitzone für Vorgänge wie das Erstellen von Zeitobjekten, das Analysieren von Zeitzeichenfolgen und das Durchführen von Datums- und Uhrzeitkonvertierungen. Vergleichen Sie Daten mit unterschiedlichen Zeitzonen, um die Anwendung der vordefinierten Zeitzonenfunktion zu veranschaulichen.

Eine Strategie zur Vermeidung von Fehlern, die in C -Switch -Anweisungen standardmäßig verursacht wurden: Verwenden Sie die Umgebungen anstelle von Konstanten, wodurch der Wert der Fallerklärung auf ein gültiges Mitglied des Enum beschränkt wird. Verwenden Sie in der letzten Fallanweisung Falsch, um das Programm weiterhin den folgenden Code auszuführen. Fügen Sie für Switch -Anweisungen ohne Falle immer eine Standardanweisung für die Fehlerbehandlung hinzu oder geben Sie das Standardverhalten an.

Die Best Practices von Standard in der C -Sprache: Platzieren Sie sie am Ende der Switch -Anweisung als Standardverarbeitung für unerreichte Werte; Es wird verwendet, um unbekannte oder ungültige Werte zu verarbeiten, um die Programm Robustheit zu verbessern. Vermeiden Sie die Duplikation mit Fallzweigen, um die zuversichtliche Aufrechterhaltung zu erhalten. Kommentieren Sie deutlich zum Zweck der Standardzweig, um die Lesbarkeit zu verbessern. Vermeiden Sie es, mehrere Standardeinstellungen in einem Fall zu verwenden, um Klarheit aufrechtzuerhalten. Halten Sie den Standardzweig präzise und vermeiden Sie komplexe Operationen. Erwägen Sie, Aufzählungswerte als Fallbedingungen zu verwenden, um die Wartbarkeit zu verbessern. Verwenden Sie in großen Switch -Anweisungen mehrere Standardzweige, um unterschiedliche Situationen zu verarbeiten.

Go Language funktioniert gut beim Aufbau effizienter und skalierbarer Systeme. Zu den Vorteilen gehören: 1. hohe Leistung: Kompiliert in den Maschinencode, schnelle Laufgeschwindigkeit; 2. gleichzeitige Programmierung: Vereinfachen Sie Multitasking durch Goroutinen und Kanäle; 3. Einfachheit: präzise Syntax, Reduzierung der Lern- und Wartungskosten; 4. plattform: Unterstützt die plattformübergreifende Kompilierung, einfache Bereitstellung.
