Menu
Coddy logo textTech

공개 및 비공개 이름

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은 다른 언어에서 사용되는 publicprivate과 같은 access modifiers를 대체합니다.

// 대문자   = 내보내기된 (공개)
// 소문자 = 내보내기되지 않은 (비공개)

func SaveData() {}  // 내보내기된
func loadData() {}  // 내보내기되지 않은

이 convention을 따르는 것은 Go에서 필수적입니다. 다른 packages가 여러분의 코드를 import하면, capital letter로 start하는 names에만 접근할 수 있습니다.

challenge icon

챌린지

중급

Go의 exported naming convention을 따르도록 product.go의 모든 names를 Fix하세요. 다음 항목의 첫 글자를 대문자로 바꾸세요:

  • struct 이름: productProduct
  • 모든 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))
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

객체 지향 프로그래밍의 모든 레슨

직접 연습해 보세요: 온라인 Go 컴파일러