Heim  >  Artikel  >  Backend-Entwicklung  >  Was ist der Unterschied zwischen den Zugriffsbeschränkungen von Golang-Methoden und -Funktionen?

Was ist der Unterschied zwischen den Zugriffsbeschränkungen von Golang-Methoden und -Funktionen?

王林
王林Original
2024-04-26 15:12:02464Durchsuche

Zugriffskontrolle in Go wird durch Namenspräfixzeichen angegeben: Methodenzugriffskontrolle: öffentlich (Großbuchstaben): zugänglich für alle Pakete privat (Kleinbuchstaben): zugänglich nur für das Paket, in dem sie definiert ist Funktionszugriffskontrolle: öffentlich (Großbuchstaben): zugänglich für alle Pakete Paket (Kleinbuchstaben): Nur für das Paket zugänglich, in dem es definiert ist

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

Zugriffsbeschränkungen für Methoden und Funktionen in Go

In der Go-Sprache gelten folgende Zugriffsberechtigungen: durch die Präfixzeichen ihrer Namen bestimmt.

Methodenzugriffskontrolle

Methoden sind Funktionen, die dem Strukturtyp zugeordnet sind. Ihre Präfixzeichen lauten wie folgt:

  • public (Großbuchstaben): in allen Paketen zugänglich.
  • 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 类型和 GetFullNameprivate (Kleinbuchstabe): Nur innerhalb des Pakets zugänglich, das es definiert.

🎜Beispiel: 🎜🎜
package main

import (
    "fmt"
    "customer"
)

func main() {
    c := customer.Customer{
        firstName: "John",
        lastName: "Doe",
    }
    
    fullName := c.GetFullName()
    fmt.Println(fullName) // 输出:John Doe
}
🎜🎜Funktionszugriffskontrolle🎜🎜🎜Ähnlich wie bei Methoden bestimmen auch die Präfixzeichen von Funktionen ihre Zugriffsrechte: 🎜🎜🎜public ( Großbuchstaben): In allen Paketen verfügbar. 🎜package (Kleinbuchstabe): Nur innerhalb des Pakets zugänglich, in dem es definiert ist. 🎜🎜Beispiel: 🎜🎜rrreee🎜🎜Praktischer Fall🎜🎜🎜Angenommen, wir haben ein Paket customer, das eine Customer-Struktur und eine definiert öffentliche Methode GetFullName: 🎜rrreee🎜In einem anderen Paket main können wir Customer aus dem Paketcode customer verwenden Typ und GetFullName-Methode: 🎜rrreee

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen den Zugriffsbeschränkungen von Golang-Methoden und -Funktionen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn