Rumah >pembangunan bahagian belakang >Golang >Mari kita bincangkan tentang penukaran antara golang () dan .()

Mari kita bincangkan tentang penukaran antara golang () dan .()

PHPz
PHPzasal
2023-03-30 10:32:001103semak imbas

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

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn