公開された名前と非公開の名前
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 // 未エクスポート - パッケージ内でのみ
}この命名規則は、他の言語にある public や private のようなアクセス修飾子に取って代わります。
// 大文字 = エクスポート(公開)
// 小文字 = アンエクスポート(非公開)
func SaveData() {} // エクスポート
func loadData() {} // アンエクスポートこの convention に従うことは、Go では不可欠です。他の package があなたのコードを import すると、Capital letter で始まる names に only アクセスできます。
チャレンジ
中級product.go 内の all names を Go の exported naming convention に従うように修正してください。次の要素の先頭 letter を Capital にしてください:
- struct name:
product→Product - All field names:
name、price、stock - All function names:
totalValue、displayInfo - 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))
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
オブジェクト指向プログラミングのすべてのレッスン
1Go オブジェクト指向の基礎
外部ファイルGo ワークスペースとモジュールパッケージとインポート公開された名前と非公開の名前Go におけるオブジェクト指向入門クラスとしての構造体構造体へのメソッド定義ポインタレシーバと値レシーバ構造体の初期化コンストラクタ関数まとめ:簡易計算機8エラー処理とOOP
error インターフェースカスタムエラー型エラーラッピング (fmt.Errorf)センチネルエラーerrors.Is() と errors.As()Panic、Defer、Recover復習 - ファイルパーサー自分で練習してみよう: Goオンラインコンパイラ