Maison >développement back-end >Golang >Quelle est la différence entre les restrictions d'accès des méthodes et fonctions Golang ?

Quelle est la différence entre les restrictions d'accès des méthodes et fonctions Golang ?

王林
王林original
2024-04-26 15:12:02511parcourir

Le contrôle d'accès dans Go est spécifié par des caractères de préfixe de nom : Contrôle d'accès à la méthode : public (majuscule) : accessible à tous les packages privé (minuscule) : accessible uniquement au package dans lequel il est défini Contrôle d'accès à la fonction : public (majuscule) : accessible à tous les packages package (minuscules) : accessible uniquement au package dans lequel il est défini

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

Restrictions d'accès aux méthodes et fonctions en Go

Dans le langage Go, les autorisations d'accès aux variables, méthodes et fonctions sont déterminé par les caractères préfixes de leurs noms.

Contrôle d'accès aux méthodes

Les méthodes sont des fonctions associées au type de structure. Leurs caractères de préfixe sont les suivants :

  • public (lettres majuscules) : accessible dans tous les packages.
  • 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 (lettre minuscule) : accessible uniquement au sein du package qui le définit.

🎜Exemple : 🎜🎜
package main

import (
    "fmt"
    "customer"
)

func main() {
    c := customer.Customer{
        firstName: "John",
        lastName: "Doe",
    }
    
    fullName := c.GetFullName()
    fmt.Println(fullName) // 输出:John Doe
}
🎜🎜Contrôle d'accès aux fonctions🎜🎜🎜Semblable aux méthodes, les caractères préfixes des fonctions déterminent également leurs droits d'accès : 🎜🎜🎜public ( majuscules) : Accessible dans tous les forfaits. 🎜package (lettre minuscule) : accessible uniquement au sein du package dans lequel il est défini. 🎜🎜Exemple : 🎜🎜rrreee🎜🎜Cas pratique🎜🎜🎜Supposons que nous ayons un package client, qui définit une structure Client et un méthode publique GetFullName : 🎜rrreee🎜Dans un autre package main, nous pouvons utiliser Customer à partir du code du package customer> tapez et méthode GetFullName : 🎜rrreee

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn