技術向上

プログラミングの学び、気になるテクノロジーやビジネストレンドを発信

Public、Private【Go】

packageを横断した時の変数について、
頭文字が大文字のものはPublicとなり、外部packageから参照が可能に、
頭文字が小文字のものはPrivateとなり、外部packageから参照が不可能になります。
structの場合、Publicにするには、中身の要素も頭文字を大文字にする必要があります。

// human.go
package mylib

import (
    "fmt"
)

type Person struct {    // Publicにするため、頭文字は大文字に
    Name string    // Publicにするため、頭文字は大文字にする
    Age  int    // Publicにするため、頭文字は大文字にする
}

func (p Person) String() string {
    return fmt.Sprintf("My name is %v, %d years old.", p.Name, p.Age)
}

func (p Person) Say() {
    fmt.Println(p)
}

// main.go
import (
    "fmt"
    "hello/awsomeProject/mylib"
)

func main() {
    mike := mylib.Person{Name: "Mike", Age: 28}
    mike.Say()    // mylib.Personをmikeに代入した時点で、Personメソッドを利用することができる
}