Typ-Assertion in Go: Entmystifizierung des .(data_type) Methode**
In Go, .(data_type ), bekannt als Typzusicherung, ermöglicht das Abrufen eines bestimmten Typs aus einem Schnittstellenwert. Wie in „Effective Go“ beschrieben, geht es darum, „einen Wert des angegebenen expliziten Typs daraus zu extrahieren“.
Im bereitgestellten Code gibt „reflect.TypeOf(b)“ „interface{}“ zurück, da b zugewiesen ist der Schnittstellenwert „silly“ vom Typ string. Reflect.TypeOf(b.(string)) gibt jedoch „string“ zurück, da die Typzusicherung explizit angibt, dass b einen Zeichenfolgenwert enthält.
Typzusicherungen werden zur Laufzeit verwendet, um einen bestimmten Typ aus einer Schnittstelle zu extrahieren. Sie unterscheiden sich von der Typkonvertierung darin, dass sie keine neue Kopie des Werts erstellen, sondern auf den Typ des zugrunde liegenden Werts zugreifen.
Im Fall von b.(string) gibt die Assertion einen String-Wert zurück. Dies ermöglicht stringspezifische Vorgänge wie das Schneiden oder Überprüfen der Länge von Strings. Darüber hinaus können Sie den Erfolg der Typzusicherung testen, indem Sie einen untypisierten booleschen Wert zuweisen:
s, ok := b.(string) // s is of type string if !ok { // b did not contain a value of type string! }
Zur weiteren Verdeutlichung: Typzusicherungen sagen Go nicht, dass b eine Zeichenfolge ist. Stattdessen versuchen sie, zur Laufzeit einen Zeichenfolgenwert aus b zu extrahieren, was zu einer Panik führt, wenn b einen anderen Typ enthält (es sei denn, der optionale boolesche Wert wird zugewiesen). Der aus der Behauptung resultierende Wert hat den angegebenen Datentyp und gewährt Zugriff auf seine spezifischen Operationen und Eigenschaften.
Das obige ist der detaillierte Inhalt vonWie extrahiert Gos Typzusicherung „.(data_type)' bestimmte Typen aus Schnittstellenwerten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!