GO · 기초 문법
패키지 가시성 규칙
Go는 대문자로 시작하면 공개(exported), 소문자면 비공개(unexported)입니다. 패키지 수준의 캡슐화를 제공합니다.
기초 문법중급exportedunexportedvisibilityencapsulation
핵심 설명
Go는 대문자로 시작하면 공개(exported), 소문자면 비공개(unexported)입니다. 패키지 수준의 캡슐화를 제공합니다.
Go code
package main
import "fmt"
// 공개 타입 (다른 패키지에서 접근 가능)
type User struct {
Name string // 공개 필드
Email string // 공개 필드
age int // 비공개 필드
}
// 공개 생성자 — 비공개 필드 설정에 사용
func NewUser(name, email string, age int) *User {
return &User{Name: name, Email: email, age: age}
}
// 비공개 함수
func validate(email string) bool {
return len(email) > 0
}
func main() {
u := NewUser("Gopher", "go@dev", 5)
fmt.Println(u.Name) // OK
// fmt.Println(u.age) // 같은 패키지라 OK, 다른 패키지면 에러
}학습 팁
비공개 필드를 가진 구조체는 NewXxx 생성자 함수를 제공하여 올바른 초기화를 보장하세요.
주의할 점
구조체의 비공개 필드는 다른 패키지에서 JSON 언마샬링 시 무시됩니다. JSON 바인딩이 필요한 필드는 반드시 대문자로 시작해야 합니다.
자주 묻는 질문
패키지 가시성 규칙란 무엇인가요?
Go는 대문자로 시작하면 공개(exported), 소문자면 비공개(unexported)입니다. 패키지 수준의 캡슐화를 제공합니다.
패키지 가시성 규칙 학습 시 주의할 점은 무엇인가요?
구조체의 비공개 필드는 다른 패키지에서 JSON 언마샬링 시 무시됩니다. JSON 바인딩이 필요한 필드는 반드시 대문자로 시작해야 합니다.
Continue Learning
Go 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.