Menu
Coddy logo textTech

公開された名前と非公開の名前

CoddyのGOジャーニー「オブジェクト指向プログラミング」セクションの一部。レッスン 4/107。

Goでは、名前の最初の文字によってその可視性が決まります。大文字で始まる名前はexported(他のpackageからaccessible)です。小文字で始まる名前はunexported(package内でprivate)です。

Exported names: パッケージの外部から参照可能

type User struct {
    Name  string  // エクスポートされたフィールド
    Email string  // エクスポートされたフィールド
}

func CreateUser(name string) User { // エクスポートされた関数
    return User{Name: name}
}

Unexported names:only package の inside でのみ表示されます

type secret struct {     // 非公開の構造体
    password string      // 非公開のフィールド
}

func validate() bool {   // 非公開の関数
    return true
}

混在: exported struct と一部の非公開フィールド

type Account struct {
    Username string    // エクスポート済み - どこからでもアクセス可能
    Email    string    // エクスポート済み - どこからでもアクセス可能
    password string    // 未エクスポート - パッケージ内でのみ
}

この命名規則は、他の言語にある publicprivate のようなアクセス修飾子に取って代わります。

// 大文字   = エクスポート(公開)
// 小文字 = アンエクスポート(非公開)

func SaveData() {}  // エクスポート
func loadData() {}  // アンエクスポート

この convention に従うことは、Go では不可欠です。他の package があなたのコードを import すると、Capital letter で始まる names に only アクセスできます。

challenge icon

チャレンジ

中級

product.go 内の all names を Go の exported naming convention に従うように修正してください。次の要素の先頭 letter を Capital にしてください:

  • struct name: productProduct
  • All field names: namepricestock
  • All function names: totalValuedisplayInfo
  • function inside の All field references

自分で試してみよう

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オンラインコンパイラ