Heim  >  Artikel  >  Backend-Entwicklung  >  Golang-Assertion-Implementierung

Golang-Assertion-Implementierung

王林
王林Original
2023-05-13 10:08:371164Durchsuche

Golang ist eine Sprache mit leistungsstarken Parallelitäts- und Systemprogrammierfunktionen. Es handelt sich um eine kompilierte Sprache, die das Programmieren schneller und einfacher machen soll. Behauptungen sind ein wichtiges Konzept in Golang. Es ermöglicht Programmierern, beim Schreiben von Code den Typ einer Variablen oder Schnittstelle zu „bestätigen“, sodass der richtige Typ zur Laufzeit überprüft werden kann.

1. Was ist eine Behauptung?

Assertion ist eine Typüberprüfungsmethode, mit der festgestellt werden kann, ob eine Variable oder Schnittstelle zu einem bestimmten Typ gehört, wenn der Code ausgeführt wird. Typischerweise werden Assertionen verwendet, um die Korrektheit des Codes nach der Kompilierung zu überprüfen und Fehler frühzeitig zu erkennen und zu beheben.

In Golang werden Behauptungen über das Schlüsselwort „interface{}“ implementiert. interface{} stellt eine leere Schnittstelle dar, die alle Arten von Daten akzeptieren kann. Leere Schnittstellen können mithilfe von Typkonvertierungen in andere konkrete Typen umgewandelt werden.

Zum Beispiel verwendet der folgende Code das Schlüsselwort „interface{}“, um eine Behauptung zu implementieren:

var i interface{} = "Hello"
s := i.(string)
fmt.Println(s)

In diesem Beispiel wird die leere Schnittstelle „interface{}“ verwendet, um die Zeichenfolge „Hello“ zu speichern. Verwenden Sie dann die Behauptung „i.(string)“, um sie in den String-Typ zu konvertieren. Verwenden Sie abschließend „fmt.Println(s)“, um die Zeichenfolge „Hello“ zu drucken. 2. Drei Behauptungsmethoden in Golang „Stellt eine Variable dar, die den konvertierten Wert speichern kann; „isType“ ist eine Variable vom Typ Boolean, die auf True gesetzt wird, wenn die Konvertierung erfolgreich ist.

Zum Beispiel:

value, isType := someVariable.(Type)

In diesem Beispiel ist die Variable „i“ eine leere Schnittstelle und speichert den Wert vom Typ „Integer“ „55“. Konvertieren Sie es mit der Behauptung „s, ok := i.(string)“ in den String-Typ und speichern Sie den konvertierten Wert in der Variablen „s“. Speichern Sie das Konvertierungsergebnis in der Variablen „ok“. Anschließend wird das Konvertierungsergebnis anhand der bedingten Anweisung „if ok“ beurteilt. Wenn es sich um einen Zeichenfolgentyp handelt, wird die Zeichenfolge „55“ gedruckt, andernfalls wird „unerwarteter Typ“ gedruckt.

    2. Typ-Assertion-Anweisung
  1. var i interface{} = 55
    s, ok := i.(string)
    if ok {
      fmt.Printf("%q
    ", s)
    } else {
      fmt.Printf("unexpected type %T
    ", i)
    } 
  2. Die Typ-Assertion-Anweisung ähnelt der Typ-Check-Anweisung, gibt jedoch keinen booleschen Wert zurück, ob die Konvertierung erfolgreich war. Wenn die Typkonvertierung fehlschlägt, stürzt das Programm ab und gibt einen Panikfehler zurück.

Zum Beispiel:

value := someVariable.(Type)

In diesem Beispiel ist die Variable „i“ eine leere Schnittstelle und enthält den Wert vom Typ „Integer“ „55“. Obwohl wir beabsichtigen, es in einen String-Typ zu konvertieren, wird die Typzusicherung einen Panikfehler auslösen: „Schnittstellenkonvertierung: Schnittstelle ist int, nicht string“.

3. Typbeurteilungsanweisung

var i interface{} = 55
s := i.(string) // panic: interface conversion: interface is int, not string

Die Typbeurteilungsanweisung ähnelt der Typprüfungsanweisung, gibt jedoch keinen booleschen Wert zurück, ob die Konvertierung erfolgreich ist. Mithilfe der Typbeurteilungsanweisung kann „switch someVariable.(type)“ den Typ einer Variablen bestimmen und je nach Typ verschiedene Codeblöcke ausführen.

Zum Beispiel:

switch someVariable.(type) {
case Type1:
    // someVariable 为Type1类型
case Type2:
    // someVariable 为Type2类型
default:
    // someVariable 不是Type1或Type2类型
}

In diesem Beispiel ist die Variable „i“ eine leere Schnittstelle und speichert einen Wert vom Typ „Integer“. Mithilfe der Typbeurteilungsanweisung kann „switch i.(type)“ den Typ der „i“-Variablen bestimmen und den entsprechenden Codeblock ausführen. Da „i“ ein ganzzahliger Typ ist, gibt der Code „i ist ein int“ aus.

3. Fazit

In Golang ist Behauptung eine häufig verwendete Technologie. Es ermöglicht Programmierern, den Typ von Variablen oder Schnittstellen zur Laufzeit zu überprüfen, um später schwerwiegende Folgen durch Typfehler zu vermeiden. In diesem Artikel stellen wir drei Behauptungsmethoden in Golang vor, darunter Typprüfungsanweisungen, Typzusicherungsanweisungen und Typbeurteilungsanweisungen. Jede Behauptungsmethode hat ihre einzigartigen Vorteile und Einschränkungen, und Programmierer können entsprechend den tatsächlichen Anforderungen die Methode auswählen, die für sie am besten geeignet ist.

Das obige ist der detaillierte Inhalt vonGolang-Assertion-Implementierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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