GO語言學習:程式碼拆分(包級私有和公共)
1.把一個檔案拆分為多個(同級目錄)
為了便於理解,在此處用例子說明:
在工作區下新建一個資料夾q0,在此資料夾中,
使用命令vim demo0.go,寫入以下程式碼
package main
import "flag"
var name string
var name1 string
func init(){
flag.StringVar(&name,"name","everyone","The greeting object.")
flag.StringVar(&name1,"name1","everyone","The greeting object.")
}
func main(){
flag.Parse()
hello(name)
showMsg(name1)
}
儲存。
使用命令 vim demo0_lib.go,輸入以下程式碼
package main
import "fmt"
func hello(name string){
fmt.Printf("Hello,%s!\n",name)
}
func showMsg(name string){
fmt.Printf("Hello,%s!\n",name)
}
儲存。
使用命令 go run demo0.go demo0_lib.go -name="jxd" -name1="xd" ,終端會列印
Hello,jxd!
Hello,xd!
可以看出在demo0.go中,我們沒有使用Printf,只是呼叫了hello函式和showMsg函式,但是這兩個函式又宣告在了其他地方(demo0_lib.go)
這樣程式碼就會被我們拆分,但是為什麼呢?
因為它們在同一目錄下,並且被我們宣告屬於同一個main包。
2.同一檔案拆分到不同目錄下
新建q1資料夾,拷貝demo0.go到此檔案中變名為demo1.go
修改demo1.go中的程式碼為:
package main
import (
"flag"
"article3/q1/lib"
)
var name string
var name1 string
func init(){
flag.StringVar(&name,"name","everyone","The greeting object.")
flag.StringVar(&name1,"name1","everyone","The greeting object.")
}
func main(){
flag.Parse()
lib.Hello(name)
lib.ShowMsg(name1)
}
儲存.
在q1資料夾中新建lib資料夾,在lib中
使用命令:vim demo1_lib.go,輸入以下程式碼
package lib
import "fmt"
func Hello(name string){
fmt.Printf("Hello,%s!\n",name)
}
func ShowMsg(name string){
fmt.Printf("Hello,%s!\n",name)
}
儲存.
在q1目錄的終端下使用命令 go run demo1.go 在終端列印
Hello,everyone!
Hello,everyone!
我們在demo1.go中引入了“article3/q1/lib”,因此可以使用lib包中的程式碼,
至於demo1_lib.go中的函式首字母大寫,代表此函式可以被包外的程式碼引用。小寫則為包級私有,即使包名被宣告,但是也無法使用函式.
我本人的程式碼目錄介紹:
usr/local/go 是安裝目錄
usr/local/gopkg 是工作區
usr/local/gopkg/src 存放原始碼
usr/local/gopkg/pkg 存放 go install ***.go的歸檔檔案 (在src下,使用命令 go install article3/q1/lib, 在src同級目錄pkg下生成歸檔檔案)
demo1.go 的目錄為/usr/local/src/article/q1 下
demo1_lib.go的目錄為/usr/local/src/article/q1/lib 下