> 백엔드 개발 > Golang > golang 비수출 메소드

golang 비수출 메소드

王林
풀어 주다: 2023-05-10 12:44:07
원래의
598명이 탐색했습니다.

Golang은 매우 인기 있는 프로그래밍 언어의 특징 중 하나는 객체 지향 프로그래밍을 지원한다는 것입니다. 객체 지향 프로그래밍에서는 일반적으로 메서드를 내보낸 메서드와 내보내지 않은 메서드로 나눕니다. 내보낸 메서드는 패키지 외부의 코드에서 호출하고 사용할 수 있는 메서드인 반면, 내보내지 않은 메서드는 동일한 패키지 내의 코드로만 호출할 수 있습니다. 이 글은 Golang에서 내보내지지 않는 메소드에 중점을 둘 것입니다.

Golang에서는 메소드 이름의 첫 글자를 소문자로 사용하여 내보내지 않는 메소드를 정의합니다. 예를 들어, 다음은 Person 구조 내부에 정의된 내보내지 않은 메서드입니다.

type Person struct {
    name string
}

func (p Person) work() {
    fmt.Printf("%s is working.", p.name)
}
로그인 후 복사

위 코드에서는 work라는 이름의 내보내지 않은 메서드를 정의합니다. 이 메서드는 메서드 이름의 첫 글자가 소문자이므로 동일한 패키지 내에서만 호출할 수 있습니다. 이 메소드 내에서 구조 변수 p를 사용하여 사람의 이름 속성을 호출한 다음 그 사람이 작업 중임을 인쇄할 수 있습니다.

내보낸 메소드와 내보내지 않은 메소드의 차이점은 내보낸 메소드의 메소드 이름 첫 글자를 대문자로 표기하여 패키지 외부의 코드에서 사용할 수 있다는 점입니다. 내보내지 않은 메서드는 일반적으로 패키지 외부의 코드에서 사용할 수 없기 때문에 내부 구현 세부 정보로 사용되어 코드 논리를 더 명확하고 간결하게 만듭니다.

또한 Golang에서는 내보내지 않은 방법을 사용하여 데이터를 숨길 수도 있습니다. 예를 들어, 개인 변수가 구조 내부에서만 액세스될 수 있는 구조를 정의할 수 있습니다. 이러한 방식으로 구조 외부의 코드는 이러한 개인 변수에 직접 액세스할 수 없습니다. 메서드를 정의해야만 이러한 개인 변수를 작동할 수 있습니다. 이 접근 방식은 코드의 보안과 유지 관리 가능성을 더욱 보장할 수 있습니다.

type Person struct {
    name string
    age  int
}

func NewPerson(name string, age int) Person {
    return Person{name: name, age: age}
}

func (p Person) GetName() string {
    return p.name
}

func (p *Person) SetAge(age int) {
    p.age = age
}

func main() {
    person := NewPerson("Alice", 20)
    fmt.Printf("name: %s age: %d", person.GetName(), person.age)
    person.SetAge(21)
    fmt.Printf("name: %s age: %d", person.GetName(), person.age)
}
로그인 후 복사

위 코드에서는 이름과 나이가 비공개이므로 직접 액세스할 수 없는 Person 구조를 정의합니다. GetName과 SetAge라는 두 가지 메서드를 정의하여 이 두 가지 개인 변수를 작동합니다. 이러한 방식으로 우리는 이러한 개인 변수를 숨기고 코드의 유지 관리성과 보안을 보장할 수 있습니다.

간단히 말하면, 내보내지 않는 메소드는 Golang에서 매우 중요한 개념입니다. 이는 일반적으로 내부 구현 세부 사항으로 사용되거나 코드의 논리 및 유지 관리 가능성을 보장하기 위해 데이터를 숨기는 데 사용됩니다. 대규모 소프트웨어를 구축하든 소규모 애플리케이션을 구축하든 비수출 방법은 매우 유용할 수 있습니다.

위 내용은 golang 비수출 메소드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿