package可以將一些常常會用的程式碼獨自建立一個檔案,所以在同一個資料夾內可以有好幾個package檔案。某方面來說也是便於管理程式碼。
在同一個package中可以把這些檔案看作是在同一個檔案內
比如說package person中第一個檔案personName.go:
package person
var MyName = "Micheal"
package person中第二個檔案sayHelloTo.go:
package person
func SayHelloTo(s string) string {
str := "Hello " + s + "!"
return str
}
這兩個檔案都在package person中,所以可以把它視為這樣:
package person
var MyName = "Micheal"
func SayHelloTo(s string) string {
str := "Hello " + s + "!"
return str
}
只要在程式一開始import就行了,常用的fmt就是一個標準package
要注意的是路徑是從$GOPATH/src/為起始目錄的相對路徑
import {
fmt
"github.com/TroyCode/GoIn30Days/day6/alien"
}
在package中變數或函式的命名開頭字元大小寫是有差異的
大寫開頭:在package之外可見,稱作exported
小寫開頭:僅限於package內使用,稱作unexported
注意:這概念跟其他語言的public, private很像,但是在GO的領域通常還是講exported, unexported
舉個例子來說:
alien.go
package alien
// name start with capital will be exported in another file
var AlienName = "Eric"
這邊的AlienName大寫開頭,exported
所以在其他檔案中只要import就可以使用:
main.go
package main
import (
"fmt"
"github.com/TroyCode/GoIn30Days/day6/alien"
)
func main() {
fmt.Println(alien.AlienName)
}
如果是function也是一樣:
person.go
package person
func SayHelloTo(s string) string {
str := "Hello " + s + "!"
return str
}
main.go
package main
import (
"fmt"
"github.com/TroyCode/GoIn30Days/day6/person"
)
func main() {
fmt.Println(person.SayHelloTo("George"))
}
完整範例可以參考我的Github