>백엔드 개발 >Golang >Go 구조체에서 개인 필드와 메서드를 캡슐화하는 방법은 무엇입니까?

Go 구조체에서 개인 필드와 메서드를 캡슐화하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-06 22:29:10265검색

How to Encapsulate Private Fields and Methods in Go Structs?

Go에서 구조체에 대한 전용 필드 및 메서드 캡슐화

Go에서 구조체 필드와 메서드 모두에 대한 진정한 캡슐화를 달성하는 것은 이해의 문제입니다. 변수 범위 지정 및 가시성 규칙.

관례에 따라 대문자로 시작하는 식별자 편지는 내보내지고 선언 패키지 외부에서 액세스할 수 있습니다. 반대로, 소문자 식별자는 패키지 자체 내에서만 액세스할 수 있습니다.

mytype 구조체와 해당 doPrivate 메서드를 모두 사유화하려면 다음 단계를 수행해야 합니다.

  1. 별도 패키지 : mytype 구조체 및 관련 메서드에 대한 별도의 패키지를 만듭니다. 이렇게 하면 mytype 유형의 멤버만 전용 필드 및 메서드에 액세스할 수 있습니다.
  2. 소문자 식별자: mytype 구조체와 doPrivate 메서드의 이름을 모두 소문자로 시작하도록 바꿉니다.

결과 코드:

// Package mypkg defines the private mytype struct and its methods.
package mypkg

type mytype struct {
    size          string
    hash          uint32
}

// doPrivate can only be accessed by members of mytype.
func (r *mytype) doPrivate() string {
    return r.size
}

이제 회원만 mytype 구조체의 비공개 필드와 메서드에 액세스할 수 있습니다. mypkg 패키지 내의 외부 유형이나 함수는 이러한 비공개 멤버에 직접 액세스할 수 없습니다.

위 내용은 Go 구조체에서 개인 필드와 메서드를 캡슐화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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