Bagaimana golang mentakrifkan kaedah untuk jenis struktur

PHPz
Lepaskan: 2023-04-05 09:34:54
asal
826 orang telah melayarinya

Dalam bahasa Go, struktur ialah jenis data yang ditentukan pengguna, yang terdiri daripada satu set medan ahli pelbagai jenis Kaedah boleh ditakrifkan untuk melaksanakan operasi pada struktur. Jenis kaedah dan fungsi dalam bahasa Go sangat serupa, tetapi kaedah dan fungsi adalah berbeza. Kaedah ialah fungsi yang ditakrifkan dalam jenis struktur. Dalam artikel ini, kami akan menerangkan cara menentukan kaedah untuk jenis struct.

1. Apakah kaedah Golang?

Dalam bahasa Go, kaedah ialah fungsi yang beroperasi pada jenis data ini. Kaedah mempunyai akses kepada semua medan awam dan kaedah dari jenis yang terikat kepadanya. Sintaks mereka adalah serupa dengan fungsi Satu-satunya perbezaan ialah dalam tandatangan mereka, nama kaedah didahului oleh penerima, yang merupakan jenis struktur yang dimiliki oleh kaedah ini.

Contohnya:

type Rectangle struct {
    width, height int
}

func (r Rectangle) area() int {
    return r.width * r.height
}
Salin selepas log masuk

Jenis struktur "Segi empat tepat" ditakrifkan di sini dan kaedah "kawasan" ditakrifkan untuknya. Kaedah ini mengembalikan nilai integer dengan mengira luas segi empat tepat. Perhatikan "(r Rectangle)" dalam tandatangan fungsi. Ini adalah penerima yang membenarkan kaedah ini dipanggil pada jenis "Rectangle".

Dalam kod untuk melaksanakan kaedah, kita perlu mentakrifkan penerima. Penerima boleh menjadi jenis nilai atau jenis penunjuk. Penerima jenis nilai menggunakan salinan nilai sebagai penerima kaedah, dan penerima jenis penunjuk menggunakan penunjuk kepada nilai sebagai penerima kaedah. Untuk penerima jenis penunjuk, kaedah boleh mengubah suai nilai itu sendiri atau memanggil kaedah lain untuk mengubah suainya. Untuk penerima jenis nilai, pengubahsuaian ini diabaikan.

2. Bagaimana untuk menentukan kaedah untuk jenis?

Berikut ialah contoh program yang menunjukkan cara untuk menentukan kaedah untuk jenis struktur.

package main

import "fmt"

type Rectangle struct {
    width, height int
}

func (r Rectangle) area() int {
    return r.width * r.height
}

func (r Rectangle) perimeter() int {
    return 2 * (r.width + r.height)
}

func main() {
    r := Rectangle{10, 5}
    fmt.Println("Area: ", r.area())
    fmt.Println("Perimeter: ", r.perimeter())
}
Salin selepas log masuk

Dalam program ini, kami mentakrifkan jenis struktur yang dipanggil "Rectangle". Kami mentakrifkan dua kaedah untuk jenis ini: "kawasan" dan "perimeter".

Kaedah "luas" mengembalikan luas segi empat tepat, dan kaedah "perimeter" mengembalikan perimeter segi empat tepat.

Dalam fungsi "utama", kami mencipta contoh jenis Rectangle bernama "r". Kami mendapatkan kawasan dan perimeter segi empat tepat dengan memanggil kaedah "r.area()" dan "r.perimeter()" dan mencetak nilai ke konsol.

3. Menggunakan penerima jenis penunjuk dalam jenis

Sekarang andaikan kita mahu mengubah suai sifat jenis Segiempat. Kita perlu menggunakan jenis penunjuk dalam penerima, bukan jenis nilai. Dengan cara ini kita boleh mengubah suai medan dalam contoh.

type Rectangle struct {
    width, height int
}

func (r *Rectangle) area() int {
    return r.width * r.height
}

func (r *Rectangle) perimeter() int {
    return 2 * (r.width + r.height)
}

func (r *Rectangle) resize(newWidth int, newHeight int) {
    r.width = newWidth
    r.height = newHeight
}

func main() {
    r := &Rectangle{10, 5}
    fmt.Println("Area: ", r.area())
    fmt.Println("Perimeter: ", r.perimeter())
    r.resize(12, 6)
    fmt.Println("Area: ", r.area())
    fmt.Println("Perimeter: ", r.perimeter())
}
Salin selepas log masuk

Dalam kod di atas, kami mempunyai jenis penunjuk "*Rectangle" sebagai penerima. Ini bermakna kita boleh mengubah suai nilai jenis dalam pelaksanaan kaedah. Kami mentakrifkan kaedah baharu "mengubah saiz" untuk melepasi nilai lebar dan tinggi baharu dan menetapkannya kepada sifat lebar dan ketinggian Segiempat.

Dalam fungsi utama, kami mencipta penunjuk kepada contoh Segiempat, "r". Kami kemudian memanggil kaedah yang kami tentukan sebelum ini dan lulus nilai ketinggian dan lebar baharu kepada kaedah "saiz semula". Akhir sekali, kami mencetak kawasan baharu dan perimeter segi empat tepat ke konsol.

4. Ringkasan

Dalam bahasa Go, kaedah ialah fungsi yang ditakrifkan dalam jenis struktur. Kaedah ini mempunyai akses kepada semua medan awam dan kaedah dari jenis yang ia terikat. Dalam kod untuk melaksanakan kaedah, kita perlu menentukan penerima. Penerima boleh menjadi jenis nilai atau jenis penunjuk. Penerima jenis nilai menggunakan salinan nilai sebagai penerima kaedah, dan penerima jenis penunjuk menggunakan penunjuk kepada nilai sebagai penerima kaedah. Untuk penerima jenis penunjuk, kaedah boleh mengubah suai nilai itu sendiri atau memanggil kaedah lain untuk mengubah suainya. Untuk penerima jenis nilai, pengubahsuaian ini diabaikan.

Atas ialah kandungan terperinci Bagaimana golang mentakrifkan kaedah untuk jenis struktur. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!