在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
为了便于理解,在此处用例子说明: 在工作区下新建一个文件夹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/article3/q1 下 demo1_lib.go的目录为/usr/local/src/article3/q1/lib 下 3.模块级引用代码(internal)在article3目录下新建q2目录 使用命令 vim demo2.go ,输入以下代码: package main import ( "flag" "article3/q2/lib" ) var name string func init(name string){ flag.StringVar(&name,"name","everyone","The greeting object.") } func main(){ flag.Parse() lib.Hello(name) } 保存. 在q2目录下新建lib文件,在lib目录下 使用命令 vim demo2_lib.go,输入以下代码 package lib import( "os" in "article3/q2/lib/internal" ) func Hello(name string){ in.Hello(os.Stdout,name) } 保存. 在lib目录下新建internal文件,在internal目录下 使用命令 vim internal.go,输入以下代码 package internal import ( "fmt" "io" ) func Hello(w io.Writer,name string){ fmt.Printf(w,"Hello,%s!\n",name) } 保存 在q2目录下,使用命令 go run deno2.go ,在终端输出 Hello,everyone!
internal为模块级私有,只有他的直接上级和直接下级才可对它进行引用,其他的导包会出现错误。 |
请发表评论