Rumah >pembangunan bahagian belakang >Golang >Mari kita bincangkan tentang penukaran antara golang () dan .()
() dan .() penukaran di Golang
Di Golang, () dan .() ialah dua jenis penukaran yang sangat biasa. Dalam artikel ini, kami akan memperkenalkan senario penggunaan, peraturan penukaran dan kod sampel yang berkaitan bagi kedua-dua jenis penukaran ini.
() penukaran
Di Golang, () penukaran ialah proses menukar jenis bukan antara muka kepada jenis antara muka. Proses ini dicapai dengan merangkum nilai dalam jenis antara muka baharu. Sintaks penukaran () adalah seperti berikut:
var i interface{} = somevalue
Dalam kod di atas, kami menukar nilai somevalue
kepada jenis antara muka dan menyimpannya dalam pembolehubah i
. Semasa proses ini, pengkompil Golang akan mencipta jenis antara muka baharu untuk i
.
Penukaran() boleh digunakan pada sebarang jenis, termasuk jenis tersuai dan jenis terbina dalam. Apabila menggunakan () penukaran, kita boleh menukar mana-mana jenis bukan antara muka kepada jenis antara muka. Dengan cara ini, kita boleh menggunakan kaedah antara muka untuk beroperasi pada jenis nilai ini.
Seterusnya, mari lihat kod sampel. Katakan kita mentakrifkan jenis antara muka bernama shape
Antara muka ini mengandungi kaedah area()
untuk mengira luas sesuatu bentuk. Kami juga menentukan jenis tersuai yang dipanggil rect
untuk mewakili segi empat tepat. Kita boleh menukar jenis rect
kepada jenis shape
melalui () penukaran, dan kemudian gunakan kaedah area()
untuk mengira luas segi empat tepat. Kod sampel adalah seperti berikut:
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()) }
Menjalankan kod di atas, kita akan mendapat output berikut:
Area of rectangle: 12
Seperti yang dapat dilihat daripada kod sampel di atas, kita menukar Nilai jenis rect
ditukar kepada nilai jenis shape
, dan kemudian luas segi empat tepat dikira menggunakan kaedah area()
.
.() penukaran
Di Golang, .() penukaran ialah proses menukar jenis antara muka kepada jenis bukan antara muka. Proses ini dicapai dengan mengekstrak nilai daripada jenis antara muka dan menukarnya kepada jenis bukan antara muka yang baharu. Sintaks penukaran .() adalah seperti berikut:
var aType someType = i.(someType)
Dalam kod di atas, kami menggunakan penukaran .()
untuk menukar jenis antara muka i
kepada jenis bukan antara muka someType
. Semasa proses ini, Golang menyemak sama ada jenis sebenar nilai yang disimpan dalam jenis antara muka sepadan dengan someType
. Jika padanan berjaya, Golang akan mengekstrak nilai yang disimpan dalam jenis antara muka dan menukarnya kepada jenis someType
dan menyimpannya dalam pembolehubah aType
. Jika perlawanan gagal, program akan menimbulkan panik pada masa larian.
Apabila menggunakan penukaran .go(), kita mesti memastikan bahawa jenis sebenar nilai yang disimpan dalam jenis antara muka sepadan dengan jenis bukan antara muka yang ingin kita tukar, jika tidak, atur cara akan menimbulkan panik semasa masa jalan .
Seterusnya, mari lihat kod sampel. Katakan kita mempunyai jenis antara muka bernama shape
Antara muka ini mengandungi kaedah area()
untuk mengira luas sesuatu bentuk. Kami juga menentukan jenis tersuai yang dipanggil rect
untuk mewakili segi empat tepat. Kita boleh menukar jenis shape
kepada jenis rect
melalui penukaran .go() dan mengira luas segi empat tepat. Kod sampel adalah seperti berikut:
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()) }
Menjalankan kod di atas, kita akan mendapat output berikut:
Area of rectangle: 12
Seperti yang dapat dilihat daripada kod sampel di atas, kita menukar Nilai jenis rect
ditukar kepada nilai jenis shape
dan ditukar kembali kepada nilai jenis rect
menggunakan penukaran .go() dan kemudian luas segi empat tepat dikira menggunakan area()
kaedah.
Ringkasan
Dalam artikel ini, kami memperkenalkan penukaran () dan .() di Golang, termasuk senario penggunaannya, peraturan penukaran dan kod sampel yang berkaitan. Kedua-dua penukaran jenis ini ialah penukaran jenis yang sangat biasa di Golang dan mana-mana pembangun Golang harus mempunyai pemahaman yang mendalam tentangnya.
Atas ialah kandungan terperinci Mari kita bincangkan tentang penukaran antara golang () dan .(). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!