首頁  >  文章  >  後端開發  >  golang 方法和函數的存取限制有什麼不同?

golang 方法和函數的存取限制有什麼不同?

王林
王林原創
2024-04-26 15:12:02470瀏覽

Go 中的存取控制透過名稱前綴字元規定:方法存取控制:public(大寫):所有套件可存取private(小寫):僅定義它的套件可存取函數存取控制:public(大寫):所有套件可存取package(小寫):僅定義它的套件可存取

golang 方法和函数的访问限制有什么区别?

#Go 中方法和函數的存取限制

在Go 語言中,變數、方法和函數的存取權限由其名稱的前綴字元決定。

方法存取控制

方法是與結構體類型關聯的函數。它們的前綴字元如下:

  • public(大寫字母):在所有套件中都可以存取。
  • private(小寫字母):僅在定義它的套件中可以存取。

範例:

type Person struct {
    name string
}

// public 方法
func (p Person) PublicMethod() {
    // ...
}

// private 方法
func (p Person) privateMethod() {
    // ...
}

函數存取控制

與方法類似,函數的前綴字元也決定了它們的存取權限:

  • public(大寫字母):在所有套件中都可以存取。
  • package(小寫字母):僅在定義它的套件中可以存取。

範例:

// public 函数
func PublicFunction() {
    // ...
}

// package 函数
func packageFunction() {
    // ...
}

實戰案例

假設我們有一個套件customer ,其中定義了一個Customer 結構體和一個公共方法GetFullName

package customer

type Customer struct {
    firstName string
    lastName string
}

// public 方法
func (c Customer) GetFullName() string {
    return c.firstName + " " + c.lastName
}

在另一個套件main 中,我們可以使用customer 套件中的Customer 類型和GetFullName 方法:

package main

import (
    "fmt"
    "customer"
)

func main() {
    c := customer.Customer{
        firstName: "John",
        lastName: "Doe",
    }
    
    fullName := c.GetFullName()
    fmt.Println(fullName) // 输出:John Doe
}

以上是golang 方法和函數的存取限制有什麼不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn