Heim >Backend-Entwicklung >Golang >Lassen Sie uns über die Konvertierung zwischen golang () und .() sprechen
()- und .()-Konvertierung in Golang
In Golang sind () und .() zwei sehr häufige Typkonvertierungen. In diesem Artikel stellen wir die Verwendungsszenarien, Konvertierungsregeln und zugehörigen Beispielcodes dieser beiden Typkonvertierungen vor.
()-Konvertierung
In Golang ist ()-Konvertierung der Prozess der Konvertierung eines Nicht-Schnittstellentyps in einen Schnittstellentyp. Dieser Prozess wird durch die Kapselung eines Werts in einem neuen Schnittstellentyp erreicht. Die Syntax der ()-Konvertierung lautet wie folgt:
var i interface{} = somevalue
Im obigen Code konvertieren wir einen Wert somevalue
in einen Schnittstellentyp und speichern ihn in einer Variablen i
. In diesem Prozess erstellt der Golang-Compiler einen neuen Schnittstellentyp für i
. Die somevalue
转换为一个接口类型,并将其存储在一个变量i
中。在这个过程中,Golang编译器会为i
创建一个新的接口类型。
()转换可以应用于任何类型,包括自定义类型和内置类型。使用()转换时,我们可以将任何一个非接口类型转换为一个接口类型。这样,我们就可以使用接口的方法来操作这些类型的值。
接下来,我们来看一个示例代码。假设我们定义了一个名为shape
的接口类型,这个接口包含一个area()
方法,用于计算一个形状的面积。我们还定义了一个名为rect
的自定义类型,用于表示一个矩形。我们可以通过()转换将rect
类型转换为shape
类型,然后使用area()
方法计算矩形的面积。示例代码如下:
package main import "fmt" type shape interface { area() float64 } type rect struct { width, height float64 } func (r rect) area() float64 { return r.width * r.height } func main() { r := rect{width: 3, height: 4} s := shape(r) // 将rect类型转换为shape类型 fmt.Println("Area of rectangle:", s.area()) }
运行上述代码,我们将会得到如下输出结果:
Area of rectangle: 12
从上述示例代码可以看出,我们通过使用()转换将一个rect
类型的值转换为一个shape
类型的值,然后使用area()
方法计算了这个矩形的面积。
.()转换
在Golang中,.()转换是将一个接口类型转换为一个非接口类型的过程。这个过程是通过将接口类型中的值提取出来并转换为一个新的非接口类型来完成的。.()转换的语法如下所示:
var aType someType = i.(someType)
上述代码中,我们使用.()
转换将一个接口类型i
转换为非接口类型someType
。在这个过程中,Golang会检查接口类型中存储的值的实际类型是否与someType
匹配。如果匹配成功,Golang会将接口类型中存储的值提取出来,并将其转换为someType
类型存储在变量aType
中。如果匹配失败,则程序会在运行时抛出一个panic。
使用.go()转换时,我们必须确保接口类型中存储的值的实际类型与我们要转换成的非接口类型是匹配的,否则程序会在运行时抛出一个panic。
接下来,我们来看一个示例代码。假设我们有一个名为shape
的接口类型,这个接口包含一个area()
方法,用于计算一个形状的面积。我们还定义了一个名为rect
的自定义类型,用于表示一个矩形。我们可以通过.go()转换将shape
类型转换为rect
类型,并计算矩形的面积。示例代码如下:
package main import "fmt" type shape interface { area() float64 } type rect struct { width, height float64 } func (r rect) area() float64 { return r.width * r.height } func main() { s := shape(rect{width: 3, height: 4}) // 将rect类型转换为shape类型 r := s.(rect) // 将shape类型转换为rect类型 fmt.Println("Area of rectangle:", r.area()) }
运行上述代码,我们将会得到如下输出结果:
Area of rectangle: 12
从上述示例代码可以看出,我们通过使用()转换将一个rect
类型的值转换为一个shape
类型的值,并使用.go()转换将其转换回rect
类型的值,然后使用area()
shape
. Diese Schnittstelle enthält eine area()
-Methode zur Berechnung der Fläche einer Form. Wir definieren außerdem einen benutzerdefinierten Typ namens rect
, um ein Rechteck darzustellen. Wir können den Typ rect
durch die ()-Konvertierung in den Typ shape
konvertieren und dann die Methode area()
verwenden, um die Fläche von zu berechnen das Rechteck. Der Beispielcode lautet wie folgt: rrreee
Führen Sie den obigen Code aus, wir erhalten die folgende Ausgabe: 🎜rrreee🎜Wie aus dem obigen Beispielcode ersichtlich ist, konvertieren wir einen Wert vom Typrect
mithilfe von () konvertiert einen Wert vom Typ shape
und verwendet dann die Methode area()
, um die Fläche des Rechtecks zu berechnen. 🎜🎜.()-Konvertierung🎜🎜In Golang ist die .()-Konvertierung der Prozess der Konvertierung eines Schnittstellentyps in einen Nicht-Schnittstellentyp. Dieser Prozess wird durch Extrahieren des Werts aus dem Schnittstellentyp und Konvertieren in einen neuen Nicht-Schnittstellentyp erreicht. Die Syntax der .()-Konvertierung lautet wie folgt: 🎜rrreee🎜Im obigen Code verwenden wir die .()
-Konvertierung, um einen Schnittstellentyp i
in einen nicht zu konvertieren -Schnittstellentyp someType
. Während dieses Vorgangs prüft Golang, ob der tatsächliche Typ des im Schnittstellentyp gespeicherten Werts mit someType
übereinstimmt. Wenn die Übereinstimmung erfolgreich ist, extrahiert Golang den im Schnittstellentyp gespeicherten Wert, konvertiert ihn in den Typ someType
und speichert ihn in der Variablen aType
. Wenn die Übereinstimmung fehlschlägt, löst das Programm zur Laufzeit eine Panik aus. 🎜🎜Bei der .go()-Konvertierung müssen wir sicherstellen, dass der tatsächliche Typ des im Schnittstellentyp gespeicherten Werts mit dem Nicht-Schnittstellentyp übereinstimmt, in den wir konvertieren möchten, da das Programm sonst zur Laufzeit eine Panik auslöst. 🎜🎜Als nächstes schauen wir uns einen Beispielcode an. Angenommen, wir haben einen Schnittstellentyp namens shape
. Diese Schnittstelle enthält eine area()
-Methode zur Berechnung der Fläche einer Form. Wir definieren außerdem einen benutzerdefinierten Typ namens rect
, um ein Rechteck darzustellen. Wir können den Typ shape
durch die .go()-Konvertierung in den Typ rect
konvertieren und die Fläche des Rechtecks berechnen. Der Beispielcode lautet wie folgt: 🎜rrreee🎜Führen Sie den obigen Code aus, wir erhalten die folgende Ausgabe: 🎜rrreee🎜Wie aus dem obigen Beispielcode ersichtlich ist, konvertieren wir einen Wert vom Typ rect
mithilfe von ()-Konvertierung Seien Sie ein Wert vom Typ shape
und verwenden Sie die .go()-Konvertierung, um ihn zurück in einen Wert vom Typ rect
zu konvertieren, und verwenden Sie dann die area()-Konvertierung.
Methode Die Fläche dieses Rechtecks wird berechnet. 🎜🎜Zusammenfassung🎜🎜In diesem Artikel haben wir die ()- und .()-Konvertierungen in Golang vorgestellt, einschließlich ihrer Verwendungsszenarien, Konvertierungsregeln und zugehörigen Beispielcodes. Bei beiden Typkonvertierungen handelt es sich um sehr häufige Typkonvertierungen in Golang, und jeder Golang-Entwickler sollte über ein tiefes Verständnis davon verfügen. 🎜Das obige ist der detaillierte Inhalt vonLassen Sie uns über die Konvertierung zwischen golang () und .() sprechen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!