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メソッドを利用することができる
}