Heim >Backend-Entwicklung >Golang >Lassen Sie uns über die Konvertierung zwischen golang () und .() sprechen

Lassen Sie uns über die Konvertierung zwischen golang () und .() sprechen

PHPz
PHPzOriginal
2023-03-30 10:32:001103Durchsuche

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

()-Konvertierung kann auf jeden Typ angewendet werden, einschließlich benutzerdefinierter Typen und integrierter Typen. Bei der ()-Konvertierung können wir jeden Nicht-Schnittstellentyp in einen Schnittstellentyp konvertieren. Auf diese Weise können wir die Methoden der Schnittstelle verwenden, um diese Art von Werten zu bearbeiten.

Als nächstes schauen wir uns einen Beispielcode an. Angenommen, wir definieren einen Schnittstellentyp mit dem Namen 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 Typ rect 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!

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