Go의 액세스 제어는 이름 접두사 문자로 지정됩니다. 메소드 액세스 제어: public(대문자): 모든 패키지에 액세스 가능 private(소문자): 정의된 패키지에만 액세스 가능 기능 액세스 제어: public(대문자): 액세스 가능 모든 패키지 패키지(소문자): 정의된 패키지에만 액세스 가능
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
类型和 GetFullName
private
(소문자): 이를 정의하는 패키지 내에서만 액세스할 수 있습니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!