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 下