Golang 中的方法

Golang中的方法 類似於函數,但有一個主要區別:它們有一個接收器參數,允許存取接收器的屬性。接收器可以是結構體類型,也可以是非結構體類型,但兩者必須位於同一個套件中。無法為其他套件中定義的類型建立方法,包括intstring等內建類型;否則,編譯器將報告錯誤。

Golang 中的方法

例如:

package main

import "fmt"

// Định nghĩa một struct
type person struct {
    name string
    age  int
}

// Định nghĩa một phương thức với struct receiver
func (p person) display() {
    fmt.Println("Name:", p.name)
    fmt.Println("Age:", p.age)
}

func main() {
    // Tạo một phiên bản của struct
    a := person{name: "a", age: 25}
    
    // Gọi phương thức
    a.display()
}

結果:

Name: a
Age: 25

句法

func(receiver_name Type)  method_name(parameter_list) (return_type) { 
// Code
}

接收器:可以使用此方法存取。

接收器為結構體類型的方法

在 Go 中,您可以定義接收器類型為 struct 的方法。接收器可以在方法內部存取。前面的範例使用結構類型的接收器說明了這種方法。

接收器的方法不是結構類型

Go 也允許方法具有非結構接收器,只要接收器類型和方法定義在同一個套件中。您不能定義具有來自另一個套件的接收器類型的方法(例如 int、string)。

例如:

package main

import "fmt"

// Tạo một kiểu tùy biến dựa trên int
type number int

// Định nghĩa một phương thức với receiver không phải struct
func (n number) square() number {
    return n * n
}

func main() {
    a := number(4)
    b := a.square()

    fmt.Println("Square of", a, "is", b)
}

結果:

Square of 4 is 16

帶有接收者指標的方法

在 Go 中,方法可以有指標接收器。這使得方法中所做的更改能夠反映在呼叫者中,而這對於值接收器來說是不可能的。

句法:

func (p *Type) method_name(...Type) Type {    // Code}

例如:

package main

import "fmt"

// Defining a struct
type person struct {
    name string
}

// Phương thức với receiver pointer để chỉnh sửa dữ liệu
func (p *person) changeName(newName string) {
    p.name = newName
}

func main() {
    a := person{name: "a"}
    
    fmt.Println("Before:", a.name)
    
    // Gọi phương thức này để thay đổi tên
    a.changeName("b")
    
    fmt.Println("After:", a.name)
}

結果:

Before: a
After: b

方法接受指標和值

與函數不同,Go 方法可以接受值和指標接收器。您可以傳遞指標或值,方法將相應地處理。

例如:

package main
import "fmt"

type person struct {
    name string
}
// Phương thức với receiver pointer
func (p *person) updateName(newName string) {
    p.name = newName
}

// Phương thức với receiver value 
func (p person) showName() {
    fmt.Println("Name:", p.name)
}

func main() {
    a := person{name: "a"}
    
    // Gọi phương thức con trỏ cùng giá trị
    a.updateName("b")
    fmt.Println("After pointer method:", a.name)
    
    // Gọi phương thức giá trị với con trỏ
    (&a).showName()
}

結果:

After pointer method: b
Name: b

方法和函數之間的區別

方法
包含接收器 不包含接收器
可以定義具有相同名稱但不同類型的方法。 不允許使用具有相同名稱但不同類型的函數。
不能用作最高級 可用作上級對象
Sign up and earn $1000 a day ⋙

Leave a Comment

OpenAI推出新工具幫助開發人員建構AI代理

OpenAI推出新工具幫助開發人員建構AI代理

OpenAI 將 AI 代理視為人工智慧產業的未來,並承認使用現有工具建立強大的「工業級」代理非常困難。

Pocket Casts:最佳播客應用程式現已在桌面上免費提供

Pocket Casts:最佳播客應用程式現已在桌面上免費提供

對於播客迷來說這是一個好消息。 Pocket Casts 目前可在網路上以及透過 Mac 和 Windows 應用程式免費使用。

查看藍色幽靈登陸器在月球表面的首批影像

查看藍色幽靈登陸器在月球表面的首批影像

隨著藍色幽靈登陸器本週末抵達月球,世界各地的天文學家正熱切期待一系列令人驚嘆的新圖像,這些圖像將為我們星球的天然衛星提供真正身臨其境的、甚至是前所未有的觀察。

如何在 Golang 中使用常數

如何在 Golang 中使用常數

Golang 中的 Constant 或 Const 是什麼?以下是關於在 Go 中使用常數需要了解的內容。

如何找回被駭客入侵的 Facebook 密碼和遺失的註冊信箱

如何找回被駭客入侵的 Facebook 密碼和遺失的註冊信箱

使用 Facebook 時,有時您的帳號會被駭客入侵、遺失密碼,甚至遺失您的 Facebook 註冊電子郵件。那麼,當您遺失密碼和註冊電子郵件時,如何恢復您的 Facebook 帳號?

如何偽造 iPhone 訊息、創建 Messenger 訊息

如何偽造 iPhone 訊息、創建 Messenger 訊息

當我們可以使用虛假訊息創建應用程式或使用一些完全免費創建虛假訊息的網站時,製作虛假訊息來欺騙人們非常簡單。

終極進化代碼:最新賽亞人以及如何輸入代碼

終極進化代碼:最新賽亞人以及如何輸入代碼

代碼終極進化賽賽亞人為玩家提供了一系列有吸引力的獎勵,並感謝他們在遊戲初期的鑽石、經驗、經驗膠囊、黃金、角色碎片等

如何在 Instagram 個人檔案中編輯預覽照片

如何在 Instagram 個人檔案中編輯預覽照片

Instagram 最近將個人資料網格佈局更改為 4:5 垂直預覽。並且用戶可以自訂預覽圖像以聚焦他們想要的內容。

代號:西遊記 最新 2025年4月25日

代號:西遊記 最新 2025年4月25日

Code Monkey King 為玩家提供一系列誘人的獎勵,例如貨幣、5 星隨機角色碎片、九轉金丹、隨機資源包

使用 Microsoft Word 的 11 種創意方法

使用 Microsoft Word 的 11 種創意方法

當您想到 Microsoft Word 時,您會想到什麼?文件?恢復?雖然這些肯定是它的主要用途,但 Word 也是一個令人驚訝的多功能工具,可用於各種創意專案。

如何在 WhatsApp 狀態中標記好友

如何在 WhatsApp 狀態中標記好友

WhatsApp 已將 WhatsApp 狀態中標記好友的功能更新至 Android 和 iOS 版本的所有帳號。

為每個人收集易於製作、美味、優質的咖啡雞尾酒配方

為每個人收集易於製作、美味、優質的咖啡雞尾酒配方

喜歡咖啡想嘗試製作自己的咖啡雞尾酒嗎?因此以下的文章將為您總結製作簡單、美味且誘人的咖啡雞尾酒的食譜。

《死神》:外貌變化最多的角色

《死神》:外貌變化最多的角色

雖然《死神》系列中有很多角色被認為是可識別的,但這並不一定意味著他們從頭到尾都有相同的外觀。以下是外表發生顯著變化的《死神》角色。

如何優化 Google Chrome 以實現超快速啟動

如何優化 Google Chrome 以實現超快速啟動

我們都遇到過這種情況:點擊 Chrome 圖標,然後等待瀏覽器啟動。等待主頁加載似乎永遠是令人沮喪的。

如何在三星手機上用照片製作貼紙

如何在三星手機上用照片製作貼紙

在某些三星 Galaxy 手機上,有一個從相簿中的照​​片創建貼紙的選項,允許用戶自由創建用於資訊中的貼紙。