Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Kaedah penggunaan kaedah fungsi Golang kaedah penggunaan penegasan

Kaedah penggunaan kaedah fungsi Golang kaedah penggunaan penegasan

WBOY
WBOYasal
2023-05-16 11:01:44971semak imbas

Golang ialah bahasa pengaturcaraan yang cekap yang pada masa ini sangat popular kerana kesederhanaan, kecekapan dan kebolehpercayaannya. Penegasan jenis fungsi dan kaedah dalam Golang adalah salah satu alat penting yang biasa digunakan oleh pengaturcara lanjutan. Melalui artikel ini, kita akan mendalami penggunaan penegasan jenis kaedah untuk fungsi Golang.

  1. Pengenalan kepada penegasan jenis kaedah

Di Golang, penegasan jenis kaedah ialah penukaran jenis antara penunjuk dan nilai. Dengan menggunakan notasi titik untuk memanggil kaedah, Golang melakukan sesuatu di belakang tabir. Apabila anda memanggil kaedah, anda sebenarnya menghantar penerima (untuk nilai dan penunjuk) kepada kaedah tersebut. Menggunakan penegasan jenis kaedah, kita boleh menukar antara nilai dan penunjuk secara bebas.

Contohnya:

type MyType struct {
    field int
}

func (mt MyType) sayHi() {
    fmt.Println("Hi from MyType with field:", mt.field)
}

func (mt *MyType) sayBye() {
    fmt.Println("Bye from MyType with field:", mt.field)
}

mt := &MyType{field: 42}
mt.sayHi() // Hi from MyType with field: 42

var i interface{} = mt
i.(MyType).sayHi() // Hi from MyType with field: 42

i.(MyType).sayBye() // 运行时error:invalid type assertion: i.(MyType) (non-interface type *interface {} on left)
  1. Jenis penunjuk dan jenis nilai

Di Golang, struktur boleh menjadi jenis nilai atau jenis penunjuk. Struktur jenis penunjuk boleh menukar keadaannya dalam kaedah, manakala struktur jenis nilai tidak mengubah keadaannya.

Jenis penuding MyType:

type MyType struct {
    field int
}

func (mt *MyType) sayHi() {
    fmt.Println("Hi from MyType with field:", mt.field)
}

mt := &MyType{field: 42}
mt.sayHi() // Hi from MyType with field: 42

Nilai jenis MyType:

type MyType struct {
    field int
}

func (mt MyType) sayHi() {
    fmt.Println("Hi from MyType with field:", mt.field)
}

mt := MyType{field: 42}
mt.sayHi() // Hi from MyType with field: 42
  1. Penggunaan penegasan jenis kaedah

Dalam Golang, Jenis kaedah penegasan boleh membantu kami menguasai penukaran antara jenis penunjuk dan jenis nilai. Dalam contoh berikut, kami menunjukkan cara menggunakan penegasan jenis kaedah.

type MyType struct {
    field int
}

func (mt MyType) sayHi() {
    fmt.Println("Hi from MyType with field:", mt.field)
}

func (mt *MyType) sayBye() {
    fmt.Println("Bye from MyType with field:", mt.field)
}

func main() {
    mt := &MyType{field: 42}
    mt.sayHi() // Hi from MyType with field: 42

    // 方法类型断言:值类型转换成指针类型
    var imt interface{} = MyType{field: 24}
    p, ok := imt.(*MyType) // ok 变量用于检查类型断言是否成功
    if ok {
        p.sayHi() // Hi from MyType with field: 24
    } else {
        fmt.Println("assertion failed")
    }

    // 方法类型断言:指针类型转换成值类型
    imt = mt
    v, ok := imt.(MyType) // ok 变量用于检查类型断言是否成功
    if ok {
        v.sayHi() // Hi from MyType with field: 42
    } else {
        fmt.Println("assertion failed")
    }
}

Menggunakan penegasan jenis kaedah membolehkan kami menukar antara nilai dan penunjuk secara bebas, sekali gus memudahkan proses pengaturcaraan.

  1. Ringkasan

Di Golang, penegasan jenis kaedah ialah salah satu alatan penting yang biasa digunakan oleh pengaturcara lanjutan. Dengan penegasan jenis kaedah, kita boleh menukar antara nilai dan penunjuk secara bebas, dengan itu memudahkan proses pengaturcaraan. Artikel ini memperincikan perbezaan antara jenis penuding dan jenis nilai serta cara menggunakan penegasan jenis kaedah. Bagi pemula, penegasan jenis kaedah boleh menjadi agak rumit, tetapi apabila anda memperoleh pengalaman, pemahaman dan penguasaan penegasan jenis kaedah akan memberi manfaat yang besar.

Atas ialah kandungan terperinci Kaedah penggunaan kaedah fungsi Golang kaedah penggunaan penegasan. 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
Artikel sebelumnya:kod tersembunyi golangArtikel seterusnya:kod tersembunyi golang