Rumah > pembangunan bahagian belakang > Golang > Bermula dengan kaedah golang

Bermula dengan kaedah golang

WBOY
Lepaskan: 2023-05-22 17:03:39
asal
474 orang telah melayarinya

Golang ialah bahasa pengaturcaraan yang ditaip kuat dan statik yang mempunyai prestasi, kesesuaian, kesederhanaan dan keselamatan yang cemerlang. Antaranya, kaedah merupakan konsep yang sangat penting di Golang, yang membolehkan pengaturcara mengendalikan struktur dengan lebih mudah. Artikel ini akan memperkenalkan pembaca kepada kaedah di Golang, termasuk definisi kaedah, panggilan dan pewarisan, untuk membantu pemula menjadi biasa dengan penggunaan kaedah.

1. Definisi kaedah

Kaedah ialah fungsi khas yang mesti mempunyai penerima sebelum ia boleh dipanggil. Penerima boleh menjadi jenis struktur, atau jenis bukan struktur (seperti int, apungan, dll.). Kaedah boleh ditakrifkan dalam mana-mana pakej, bukan hanya pakej di mana struktur terletak. Format definisi kaedah

adalah seperti berikut:

func (接收器变量 接收器类型) 方法名(参数列表)(返回值列表){
    // 函数体
}
Salin selepas log masuk

Antaranya, pembolehubah penerima boleh menjadi sebarang nama pembolehubah sah, dan jenis penerima adalah apa-apa jenis, tetapi ia mestilah jenis dalam pakej semasa. Di dalam kaedah, anda boleh menggunakan pembolehubah penerima untuk mengakses medan dan kaedah yang terkandung oleh penerima.

Terdapat dua jenis penerima:

  • Penerima jenis nilai (penerima nilai): Kaedah menggunakan penerima jenis nilai akan membuat salinan penerima apabila dipanggil Pengubahsuaian Kaedah kepada penerima tidak dicerminkan dalam pembolehubah asal.
  • Penerima penuding: Kaedah menggunakan penerima jenis penuding tidak akan menyalin penerima, dan pengubahsuaian kepada penerima dalam kaedah tersebut akan dicerminkan terus dalam pembolehubah asal.

Kod sampel adalah seperti berikut:

type Rect struct{
    width, height float64
}

// 定义求面积的方法(值类型接收器)
func (r Rect) area() float64{
    return r.width * r.height
}

// 定义求面积的方法(指针类型接收器)
func (r *Rect) areaPtr() float64{
    return r.width * r.height
}
Salin selepas log masuk

Dalam kod di atas, kami mentakrifkan dua kaedah untuk mencari luas segi empat tepat, satu menggunakan penerima jenis nilai dan lain menggunakan penerima jenis penunjuk .

2. Panggilan kaedah

Serupa dengan panggilan fungsi, panggilan kaedah memerlukan penggunaan operator titik. Apabila memanggil kaedah, Golang secara automatik menyelesaikan jenis penerima kaedah dan menghantar penerima yang mana kaedah itu tergolong sebagai parameter pertama.

Kod sampel adalah seperti berikut:

package main

import "fmt"

type Rect struct{
    width, height float64
}

// 定义求面积的方法(值类型接收器)
func (r Rect) area() float64{
    return r.width * r.height
}

// 定义求面积的方法(指针类型接收器)
func (r *Rect) areaPtr() float64{
    return r.width * r.height
}

func main(){
    rect := Rect{10, 20}

    // 调用值类型接收器的方法
    fmt.Println(rect.area())     // 输出:200

    // 调用指针类型接收器的方法
    fmt.Println(rect.areaPtr())  // 输出:200

    // 使用&符号获取指针,再调用指针类型接收器的方法
    fmt.Println((&rect).areaPtr()) // 输出:200
}
Salin selepas log masuk

Dalam kod di atas, kami mencipta segi empat tepat dan memanggil dua kaedahnya.

Perlu diambil perhatian bahawa apabila menggunakan kaedah penerima jenis nilai, jika penerima ialah jenis nilai struktur, nilai medannya tidak akan diubah suai. Apabila menggunakan kaedah penerima jenis penunjuk, jika penerima adalah jenis penunjuk struktur, nilai medannya akan diubah suai.

3. Pewarisan kaedah

Di Golang, sesuatu jenis boleh mencapai pewarisan dengan menggabungkan jenis lain. Semasa proses pewarisan, kaedah dalam subjenis boleh mengatasi kaedah dalam jenis induk untuk melaksanakan logiknya sendiri.

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
}

type Circle struct{
    radius float64
}

// 定义圆形类的方法
func (c Circle) area() float64{
    return 3.14 * c.radius * c.radius
}

func main(){
    rect := Rect{10, 20}
    circle := Circle{10}

    // 创建形状对象,使用接口类型接收
    var shape Shape

    // 将矩形类型赋值给接口类型
    shape = rect
    fmt.Println(shape.area())   // 输出:200

    // 将圆形类型赋值给接口类型
    shape = circle
    fmt.Println(shape.area())   // 输出:314
}
Salin selepas log masuk

Dalam kod di atas, kami mentakrifkan antara muka Bentuk, termasuk kaedah untuk mengira kawasan. Seterusnya, kami menentukan dua jenis bentuk, Rect dan Circle, yang masing-masing meliputi kaedah kawasan dalam antara muka Shape. Akhir sekali, kami mengira kawasan dengan menetapkan jenis Rect dan Circle masing-masing kepada jenis antara muka Shape.

Ringkasan:

Artikel ini memperkenalkan definisi, panggilan dan pewarisan kaedah di Golang. Dengan mempelajari artikel ini, pembaca dapat memahami peranan konsep penting kaedah di Golang dan menguasai kemahiran asas penggunaannya. Berdasarkan ini, pembaca boleh mempelajari lebih lanjut sintaks dan aplikasi Golang, menguasai kemahiran penggunaan kaedah yang lebih maju dan meningkatkan kebolehan pengaturcaraan mereka.

Atas ialah kandungan terperinci Bermula dengan kaedah golang. 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