Rumah >pembangunan bahagian belakang >Golang >Apakah perbezaan antara sekatan akses kaedah dan fungsi golang?

Apakah perbezaan antara sekatan akses kaedah dan fungsi golang?

王林
王林asal
2024-04-26 15:12:02508semak imbas

Kawalan akses dalam Go ditentukan oleh aksara awalan nama: Kawalan akses kaedah: awam (huruf besar): boleh diakses oleh semua pakej peribadi (huruf kecil): hanya boleh diakses oleh pakej yang ditakrifkan Kawalan akses fungsi: awam (huruf besar): boleh diakses kepada semua pakej pakej (huruf kecil): hanya boleh diakses oleh pakej yang ditakrifkan

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

Sekatan akses pada kaedah dan fungsi dalam Go

Dalam bahasa Go, kebenaran akses pembolehubah, kaedah dan fungsi adalah ditentukan oleh aksara awalan nama mereka.

Kawalan Akses Kaedah

Kaedah ialah fungsi yang dikaitkan dengan jenis struktur. Aksara awalan mereka adalah seperti berikut:

  • awam (huruf besar): boleh diakses dalam semua pakej.
  • 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 类型和 GetFullNameperibadi (huruf kecil): hanya boleh diakses dalam pakej yang mentakrifkannya.

🎜Contoh: 🎜🎜
package main

import (
    "fmt"
    "customer"
)

func main() {
    c := customer.Customer{
        firstName: "John",
        lastName: "Doe",
    }
    
    fullName := c.GetFullName()
    fmt.Println(fullName) // 输出:John Doe
}
🎜🎜Kawalan akses fungsi🎜🎜🎜Sama seperti kaedah, aksara awalan fungsi juga menentukan hak aksesnya: 🎜🎜🎜awam huruf besar): Boleh diakses dalam semua pakej. 🎜pakej (huruf kecil): hanya boleh diakses dalam pakej yang ditakrifkan. 🎜🎜Contoh: 🎜🎜rrreee🎜🎜Kes praktikal🎜🎜🎜Andaikan kita mempunyai pakej pelanggan, yang mentakrifkan struktur Pelanggan dan kaedah awam GetFullName: 🎜rrreee🎜Dalam pakej lain utama, kita boleh menggunakan Customer daripada kod pakej customer> taip dan kaedah GetFullName: 🎜rrreee

Atas ialah kandungan terperinci Apakah perbezaan antara sekatan akses kaedah dan fungsi golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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