Detaillierte Einführung in die Typkonvertierung in Golang

PHPz
Freigeben: 2023-04-25 16:43:37
Original
887 Leute haben es durchsucht

Golang ist eine statisch typisierte Programmiersprache und die Typkonvertierung spielt eine wichtige Rolle bei der täglichen Programmierung. In Golang kann die Typkonvertierung einen Wert von einem Typ in einen anderen Typ konvertieren. In diesem Artikel wird die Typkonvertierung in Golang ausführlich vorgestellt.

  1. Grundlegende Typkonvertierung

In Golang kann sowohl eine automatische Typkonvertierung als auch eine erzwungene Typkonvertierung durchgeführt werden. Automatische Typkonvertierung bedeutet, dass der Compiler bei Bedarf automatisch einen Typ in einen anderen konvertiert. Wenn Sie beispielsweise einer Variablen vom Typ Gleitkomma einen Wert vom Typ Ganzzahl zuweisen, wird die Typkonvertierung automatisch durchgeführt. Beim Casting wandelt der Programmierer einen Wert explizit von einem Typ in einen anderen um. In Golang wird die erzwungene Typkonvertierung wie folgt geschrieben: Zieltyp (konvertierter Wert).

Hier sind einige Beispiele für grundlegende Typkonvertierungen:

var i int = 10 var f float64 = float64(i) // int to float64 var u uint = uint(f) // float64 to uint var s string = string(i) // int to string var b []byte = []byte(s) // string to []byte var r rune = rune(i) // int to rune, represents a Unicode code point
Nach dem Login kopieren
  1. Schnittstellentypkonvertierung

In Golang bezieht sich die Schnittstellentypzusicherung auf die Konvertierung des Werts eines Schnittstellentyps in den Wert eines anderen Schnittstellentyps. Wenn die Konvertierung von einem der Schnittstellentypen in einen anderen jedoch unsicher ist, schlägt die Kompilierung durch den Compiler fehl. Daher kann bei der Konvertierung des Schnittstellentyps der ursprüngliche Typ eine Obermenge des Zieltyps sein, es muss jedoch sichergestellt werden, dass der konvertierte Zieltyp eine Teilmenge des ursprünglichen Typs sein muss.

Das Folgende ist ein Beispiel für die Konvertierung von Schnittstellentypen:

package main import "fmt" type Animal interface { Speak() string } type Cat struct{} func (c Cat) Speak() string { return "cat" } type Dog struct{} func (d Dog) Speak() string { return "dog" } func main() { animals := []Animal{Cat{}, Dog{}, Cat{}, Dog{}} for _, animal := range animals { fmt.Println(animal.Speak()) if v, ok := animal.(Dog); ok { fmt.Println(v, ok) } } }
Nach dem Login kopieren
  1. Benutzerdefinierte Typkonvertierung

In Golang kann zusätzlich zur Basistyp- und Schnittstellentypkonvertierung auch eine benutzerdefinierte Typkonvertierung durchgeführt werden. Eine Konvertierung, die einen neuen Typ definiert, ist sehr nützlich, da sie den neuen Typ in den alten Typ konvertiert und umgekehrt. Wenn wir es nicht mit NewType als Typ definieren würden, könnten wir die Konvertierungsfunktion nicht verwenden.

Das Folgende ist ein Beispiel für eine benutzerdefinierte Typkonvertierung:

type Celsius float64 type Fahrenheit float64 const ( AbsoluteZeroC Celsius = -273.15 FreezingC Celsius = 0 BoilingC Celsius = 100 ) func CToF(c Celsius) Fahrenheit { return Fahrenheit(c*9/5 + 32) } func FToC(f Fahrenheit) Celsius { return Celsius((f - 32) * 5 / 9) } func main() { fmt.Printf("%g\n", BoilingC-FreezingC) // "100" °C boilingF := CToF(BoilingC) fmt.Printf("%g\n", boilingF-CToF(FreezingC)) // "180" °F }
Nach dem Login kopieren

Zusammenfassung

In diesem Artikel wird die Typkonvertierung in Golang vorgestellt, einschließlich der Konvertierung von Basistypen, Schnittstellentypen und benutzerdefinierten Typen. Bei der Typkonvertierung müssen wir die Sicherheitsspezifikationen der Typkonvertierung einhalten, um sicherzustellen, dass unser Programm korrekt ist. In vielen Szenarien ist eine Typkonvertierung erforderlich. Ein gutes Typkonvertierungsdesign kann die Leistung des Programms verbessern und ist besonders wichtig bei der tatsächlichen Programmierung.

Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in die Typkonvertierung in Golang. 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
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!