Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Pengenalan terperinci kepada penukaran jenis di Golang

Pengenalan terperinci kepada penukaran jenis di Golang

PHPz
PHPzasal
2023-04-25 16:19:27941semak imbas

Golang ialah bahasa pengaturcaraan yang ditaip secara statik, dan penukaran jenis memainkan peranan penting dalam pengaturcaraan harian. Di Golang, penukaran jenis boleh menukar nilai daripada satu jenis kepada jenis lain. Artikel ini akan memperkenalkan penukaran jenis di Golang secara terperinci.

  1. Penukaran jenis asas

Di Golang, kedua-dua penukaran jenis automatik dan penukaran jenis paksa boleh dilakukan. Penukaran jenis automatik bermakna pengkompil secara automatik menukar satu jenis kepada jenis lain apabila perlu. Contohnya, apabila memberikan nilai jenis integer kepada pembolehubah jenis titik terapung, penukaran jenis dilakukan secara automatik. Casting ialah apabila pengaturcara secara eksplisit menukar nilai daripada satu jenis kepada yang lain. Di Golang, penukaran jenis paksa ditulis sebagai: jenis sasaran (nilai ditukar).

Berikut ialah beberapa contoh penukaran jenis asas:

var i int = 10
var f float64 = float64(i)   // int to float64
var u uint = uint(f)         // float64 to uint
var s string = string(i)     // int to string
var b []byte = []byte(s)     // string to []byte
var r rune = rune(i)         // int to rune, represents a Unicode code point
  1. Penukaran jenis antara muka

Di Golang, penegasan jenis antara muka merujuk kepada menukar Penukar nilai jenis antara muka kepada nilai jenis antara muka yang lain. Walau bagaimanapun, jika tidak selamat untuk menukar daripada salah satu jenis antara muka kepada yang lain, pengkompil akan gagal untuk menyusun. Oleh itu, apabila melakukan penukaran jenis antara muka, jenis awal boleh menjadi superset jenis sasaran, tetapi mesti berpuas hati bahawa jenis sasaran yang ditukar mestilah subset jenis asal.

Berikut ialah contoh penukaran jenis antara muka:

package main
 
import "fmt"
 
type Animal interface {
    Speak() string
}
 
type Cat struct{}
 
func (c Cat) Speak() string {
    return "cat"
}
 
type Dog struct{}
 
func (d Dog) Speak() string {
    return "dog"
}
 
func main() {
    animals := []Animal{Cat{}, Dog{}, Cat{}, Dog{}}
    for _, animal := range animals {
        fmt.Println(animal.Speak())
        if v, ok := animal.(Dog); ok {
            fmt.Println(v, ok)
        }
    }
}
  1. Penukaran jenis tersuai

Di Golang, sebagai tambahan kepada jenis asas dan antara muka jenis Penukaran, anda juga boleh melakukan penukaran jenis tersuai. Penukaran yang mentakrifkan jenis baharu sangat berguna kerana ia menukar jenis baharu kepada jenis lama dan begitu juga sebaliknya. Jika kami tidak mentakrifkannya sebagai jenis menggunakan NewType, kami tidak akan dapat menggunakan fungsi penukaran.

Berikut ialah contoh penukaran jenis tersuai:

type Celsius float64
type Fahrenheit float64

const (
    AbsoluteZeroC Celsius = -273.15
    FreezingC     Celsius = 0
    BoilingC      Celsius = 100
)

func CToF(c Celsius) Fahrenheit { return Fahrenheit(c*9/5 + 32) }
func FToC(f Fahrenheit) Celsius { return Celsius((f - 32) * 5 / 9) }

func main() {
    fmt.Printf("%g\n", BoilingC-FreezingC) // "100" °C
    boilingF := CToF(BoilingC)
    fmt.Printf("%g\n", boilingF-CToF(FreezingC)) // "180" °F
}

Ringkasan

Artikel ini memperkenalkan penukaran jenis di Golang, termasuk jenis asas, jenis antara muka dan penukaran jenis tersuai . Apabila melakukan penukaran jenis, kami mesti mematuhi spesifikasi keselamatan penukaran jenis untuk memastikan program kami betul. Penukaran jenis diperlukan dalam banyak senario Reka bentuk penukaran jenis yang baik boleh meningkatkan prestasi program dan amat penting dalam pengaturcaraan sebenar.

Atas ialah kandungan terperinci Pengenalan terperinci kepada penukaran jenis di Golang. 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