Maison > Article > développement back-end > Parlons de la conversion entre golang () et .()
() et .() conversion en Golang
En Golang, () et .() sont deux conversions de type très courantes. Dans cet article, nous présenterons les scénarios d'utilisation, les règles de conversion et les exemples de codes associés de ces deux types de conversions.
() conversion
Dans Golang, la conversion () est le processus de conversion d'un type non-interface en un type d'interface. Ce processus est accompli en encapsulant une valeur dans un nouveau type d'interface. La syntaxe de conversion () est la suivante :
var i interface{} = somevalue
Dans le code ci-dessus, nous convertissons une valeur somevalue
en un type d'interface et la stockons dans une variable i
. Dans ce processus, le compilateur Golang créera un nouveau type d'interface pour i
. La conversion 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
. Cette interface contient une méthode area()
pour calculer l'aire d'une forme. Nous définissons également un type personnalisé appelé rect
pour représenter un rectangle. Nous pouvons convertir le type rect
en type shape
via la conversion (), puis utiliser la méthode area()
pour calculer l'aire de le rectangle. L'exemple de code est le suivant : rrreee
Exécutez le code ci-dessus, nous obtiendrons le résultat suivant : 🎜rrreee🎜Comme le montre l'exemple de code ci-dessus, nous convertissons une valeur de typerect
en utilisant () la conversion est une valeur de type shape
, puis utilise la méthode area()
pour calculer l'aire du rectangle. 🎜🎜.() conversion🎜🎜Dans Golang, la conversion .() est le processus de conversion d'un type d'interface en un type non-interface. Ce processus est accompli en extrayant la valeur du type d'interface et en la convertissant en un nouveau type sans interface. La syntaxe de la conversion .() est la suivante : 🎜rrreee🎜Dans le code ci-dessus, nous utilisons la conversion .()
pour convertir un type d'interface i
en un non -type d'interface unType
. Au cours de ce processus, Golang vérifiera si le type réel de la valeur stockée dans le type d'interface correspond à someType
. Si la correspondance réussit, Golang extraira la valeur stockée dans le type d'interface et la convertira en type someType
et la stockera dans la variable aType
. Si la correspondance échoue, le programme déclenchera une panique au moment de l'exécution. 🎜🎜Lors de l'utilisation de la conversion .go(), nous devons nous assurer que le type réel de la valeur stockée dans le type d'interface correspond au type non-interface vers lequel nous voulons convertir, sinon le programme provoquera une panique au moment de l'exécution. 🎜🎜Ensuite, regardons un exemple de code. Supposons que nous ayons un type d'interface nommé shape
. Cette interface contient une méthode area()
pour calculer l'aire d'une forme. Nous définissons également un type personnalisé appelé rect
pour représenter un rectangle. Nous pouvons convertir le type shape
en type rect
via la conversion .go() et calculer l'aire du rectangle. L'exemple de code est le suivant : 🎜rrreee🎜Exécutez le code ci-dessus, nous obtiendrons le résultat suivant : 🎜rrreee🎜Comme le montre l'exemple de code ci-dessus, nous convertissons une valeur de type rect
en utilisant () conversion Soyez une valeur de type shape
et utilisez la conversion .go() pour la reconvertir en une valeur de type rect
, puis utilisez la fonction area() Méthode
L'aire de ce rectangle est calculée. 🎜🎜Résumé🎜🎜Dans cet article, nous avons présenté les conversions () et .() dans Golang, y compris leurs scénarios d'utilisation, les règles de conversion et les exemples de codes associés. Ces deux conversions de type sont des conversions de type très courantes dans Golang, et tout développeur Golang devrait en avoir une compréhension approfondie. 🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!