iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 7
1

package可以將一些常常會用的程式碼獨自建立一個檔案,所以在同一個資料夾內可以有好幾個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
}

該如何使用package

只要在程式一開始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


上一篇
30天就Go(5):if, else以及switch
下一篇
30天就Go(6):變數的可視範圍
系列文
30天就Go:教你打造LINE自動回話機器人23

尚未有邦友留言

立即登入留言