Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Einführung in die Typkonvertierung in Golang

Detaillierte Einführung in die Typkonvertierung in Golang

PHPz
PHPzOriginal
2023-04-25 16:19:27943Durchsuche

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
  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)
        }
    }
}
  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
}

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!

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