공개 및 비공개 이름
Coddy GO 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨. 107개 중 4번째.
Go에서는 이름의 첫 번째 문자가 해당 이름의 가시성을 결정합니다. capital letter로 시작하는 이름은 exported됩니다(다른 package에서 accessible). 소문자 letter로 시작하는 이름은 unexported됩니다(package에 private).
Exported names: package 외부에서 표시됨
type User struct {
Name string // 내보낸 필드
Email string // 내보낸 필드
}
func CreateUser(name string) User { // 내보낸 함수
return User{Name: name}
}내보내지 않은 이름: 패키지 내부에서만 표시됨
type secret struct { // 내보내지 않은 구조체
password string // 내보내지 않은 필드
}
func validate() bool { // 내보내지 않은 함수
return true
}혼합: 일부 unexported 필드를 포함하는 exported struct
type Account struct {
Username string // Exported - 어디서나 접근 가능
Email string // Exported - 어디서나 접근 가능
password string // Unexported - 패키지 내부에서만
}이 naming convention은 다른 언어에서 사용되는 public 및 private과 같은 access modifiers를 대체합니다.
// 대문자 = 내보내기된 (공개)
// 소문자 = 내보내기되지 않은 (비공개)
func SaveData() {} // 내보내기된
func loadData() {} // 내보내기되지 않은이 convention을 따르는 것은 Go에서 필수적입니다. 다른 packages가 여러분의 코드를 import하면, capital letter로 start하는 names에만 접근할 수 있습니다.
챌린지
중급Go의 exported naming convention을 따르도록 product.go의 모든 names를 Fix하세요. 다음 항목의 첫 글자를 대문자로 바꾸세요:
- struct 이름:
product→Product - 모든 field names:
name,price,stock - 모든 function names:
totalValue,displayInfo - 함수 내부의 모든 field 참조
직접 해보기
package main
import "fmt"
func main() {
var name string
var price float64
var stock int
fmt.Scan(&name, &price, &stock)
p := Product{
Name: name,
Price: price,
Stock: stock,
}
fmt.Println(DisplayInfo(p))
fmt.Printf("Total Value: %.2f\n", TotalValue(p))
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
객체 지향 프로그래밍의 모든 레슨
8에러 처리와 OOP
error 인터페이스사용자 정의 에러 타입에러 래핑 (fmt.Errorf)센티넬 에러errors.Is()와 errors.As()Panic, Defer, Recover요약 - 파일 파서직접 연습해 보세요: 온라인 Go 컴파일러