>백엔드 개발 >Golang >golang 메소드와 함수의 액세스 제한의 차이점은 무엇입니까?

golang 메소드와 함수의 액세스 제한의 차이점은 무엇입니까?

王林
王林원래의
2024-04-26 15:12:02505검색

Go의 액세스 제어는 이름 접두사 문자로 지정됩니다. 메소드 액세스 제어: public(대문자): 모든 패키지에 액세스 가능 private(소문자): 정의된 패키지에만 액세스 가능 기능 액세스 제어: public(대문자): 액세스 가능 모든 패키지 패키지(소문자): 정의된 패키지에만 액세스 가능

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

Go의 메소드 및 함수에 대한 액세스 제한

Go 언어에서 변수, 메소드 및 함수의 액세스 권한은 다음과 같습니다. 이름의 접두사 문자에 따라 결정됩니다.

메소드 액세스 제어

메소드는 구조 유형과 관련된 함수입니다. 접두사 문자는 다음과 같습니다:

  • public(대문자): 모든 패키지에서 액세스할 수 있습니다.
  • 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(소문자): 이를 정의하는 패키지 내에서만 액세스할 수 있습니다.

🎜예: 🎜🎜
package main

import (
    "fmt"
    "customer"
)

func main() {
    c := customer.Customer{
        firstName: "John",
        lastName: "Doe",
    }
    
    fullName := c.GetFullName()
    fmt.Println(fullName) // 输出:John Doe
}
🎜🎜함수 액세스 제어🎜🎜🎜메서드와 마찬가지로 함수의 접두사 문자도 액세스 권한을 결정합니다. 🎜🎜🎜public ( 대문자): 모든 패키지에서 접근 가능합니다. 🎜package(소문자): 정의된 패키지 내에서만 액세스할 수 있습니다. 🎜🎜예: 🎜🎜rrreee🎜🎜실용 사례🎜🎜🎜 Customer 구조와 공개 메소드 GetFullName: 🎜rrreee🎜다른 패키지 main에서는 customer 패키지 code>의 Customer를 사용할 수 있습니다. 유형 및 GetFullName 메서드: 🎜rrreee

위 내용은 golang 메소드와 함수의 액세스 제한의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.