首頁 > 後端開發 > Golang > 主體

從零開始學習Go語言類別方法和物件方法

WBOY
發布: 2024-04-03 11:03:02
原創
968 人瀏覽過

在 Go 中,類別方法與物件方法的主要區別在於它們的接收器:類別方法使用類別名稱調用,而物件方法需要實例參考。類別方法適合全域操作,物件方法適合特定實例操作。步驟:類別方法:func 關鍵字聲明,放在 type 定義中,接收器為類別本身。物件方法:func 關鍵字聲明,放在 type 定義的 func 接收器部分,接收器為實例指標。

從零開始學習Go語言類別方法和物件方法

Go 語言:從零開始學習類別方法和物件方法

Go 語言中,我們可以使用類別方法和物件方法來實作物件的行為。本文將從頭開始逐步引導您了解這兩種方法之間的差異以及如何使用它們。

類別方法

類別方法是綁定到類別本身的方法。它們可以透過類別名稱直接調用,無需建立類別實例。在 Go 中,我們使用 func 關鍵字宣告類別方法,並將其放在 type 定義中。

type Person struct {
    Name string
}

func (p Person) Greet() {
    fmt.Println("Hello, my name is " + p.Name)
}
登入後複製

上面的範例定義了一個 Person 類型和與之關聯的 Greet 類別方法。我們可以使用 Person.Greet 直接呼叫此方法,而無需建立 Person 實例。

物件方法

物件方法是與類別實例相關的方法。它們只能透過實例調用,不能透過類別名稱直接調用。在 Go 中,我們也使用 func 關鍵字宣告物件方法,但我們會將其放入 type 定義的 func 接收器部分中。

type Person struct {
    Name string
}

func (p *Person) SetName(name string) {
    p.Name = name
}
登入後複製

上面的範例定義了一個 Person 類型和一個名為 SetName 的物件方法。此方法需要一個 Person 指標作為接收器,這表示它只能透過 Person 實例呼叫。

實戰案例

以下是使用類別方法和物件方法的Go 程式範例:

package main

import "fmt"

type Person struct {
    Name string
}

func (p Person) Greet() {
    fmt.Println("Hello, my name is " + p.Name)
}

func (p *Person) SetName(name string) {
    p.Name = name
}

func main() {
    person := Person{Name: "John Doe"}

    person.Greet()
    person.SetName("Jane Doe")
    person.Greet()
}
登入後複製

在這個程式中,我們定義了一個Person 類型及其關聯的類別方法Greet 和物件方法SetName。我們建立了一個 Person 實例 person,並使用其 Greet 方法和 SetName 方法對其進行操作。

關鍵區別

類別方法和物件方法之間的主要區別在於它們的接收器:

  • 類別方法有一個隱式的type 接收器,允許它們透過類別名稱直接呼叫。
  • 物件方法有一個接收器變量,必須是該類型的指針,這使得它們只能透過實例呼叫。

總的來說,類別方法最適合於全域操作,而物件方法最適合應用於特定實例的操作。

以上是從零開始學習Go語言類別方法和物件方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板