关于golang package自定义包结构

我想说的是,好家伙Golang的项目构建稍有些繁琐呀,用户体验来说没有python、java那么简单方便。 在Google搜索golang package自定义包方面的资料,发现搜索的结果不是很令人满意。不是说的很浅,就是说的很深,都伸到编译器层面了,蒙圈…


该文章写的有些乱,欢迎来喷 ! 另外文章后续不断更新中,请到原文地址查看更新. http://xiaorui.cc/2016/03/13/%E5%85%B3%E4%BA%8Egolang-package%E8%87%AA%E5%AE%9A%E4%B9%89%E5%8C%85%E7%BB%93%E6%9E%84/

废话少说,直接开始聊Golang的package关键字与项目组织代码的用法。

Golang项目目录下一般有三个子目录:

– src存放源代码 pkg编译后生成的文件 bin编译后生成的可执行文件

一个目录下的.go文件里的package包名要一样,不然你import后会出现各种问题。package中的名称最好与目录名一样,这样在import的时候直接import目录名就好了。如果你的目录名跟包名package不一致,那么import 上层的目录就可以了。 

Golang要构建一个项目有这么几个点要注意. 
1.   首先要注意GOPATH环境,一定要确保你的项目在GOPATH内。
2.   尽量要让目录名跟package一致, 这样import引入自定义包时候不会出问题
3.   main是一个特殊的package名字,类似Java的main函数,GO的可执行程序必须在main package下

我们开始创建一个新的项目,并自定义几个包,在main里应用这些包,也可以让同一个package包的不同文件互相的调用函数方法。

#http://xiaorui.cc

#一定确保你的项目在GOPATH环境变量里面,GOPATH可以用; 分好定义多个环境位置。
echoGOPATH
/Users/ruifengyun/gg::/Users/ruifengyun/project

#src一般是用来存放具体代码的.
# ruifengyun at xiaorui in ~/project/src [11:42:54]
pwd
/Users/ruifengyun/project/src

#下面是项目的代码结构. 
# ruifengyun at xiaorui in ~/project/src [11:42:26] tree
|____project
| |____bin
| |____pkg
| | |____darwin_amd64
| | | |____handler.a
| | | |____kill.a
| | | |____pac.a
| | | |____run.a
| |____src
| | |____handler
| | | |____an.go
| | | |____h.go
| | |____main.go
| | |____pac
| | | |____pac.go
| | |____run
| | | |____main.go

下面是指定的详细代码。
# ruifengyun at xiaorui in ~/project/src [11:47:32]
cat handler/an.go
package handler

import (
    "fmt"
)

func An() {
    Hot()
    fmt.Println("func An in An, file is an.go")

}


# ruifengyun at xiaorui in ~/project/src [11:47:37] cat handler/h.go
package handler

import (
    "pac"
)

func Hot() {
    pac.PacPrint("Hot from pac func , file is h.go")
}


# ruifengyun at xiaorui in ~/project/src [11:47:41]
$ cat pac/pac.go
package pac

import (
    "fmt"
)

func PacPrint(x string) {
    fmt.Println(x + "func PacPrint in pac file")
}

运行main之前,我们需要把上面的包一个个的go build, go install

#http://xiaorui.cc

go build pac
go install pac
go build handler
go install handler

我们build源码后会发现在pkg里多了*.a的文件.

# ruifengyun at xiaorui in ~/project/src
$ go run main.go
http://xiaorui.ccfunc PacPrint in pac file
Hot from pac func , file is h.gofunc PacPrint in pac file
Hot from pac func , file is h.gofunc PacPrint in pac file
func An in An, file is an.go

关于Golang自定义包引入就说这么多了,以后遇到新问题咱们再具体阐述一下。 

END.


大家觉得文章对你有些作用! 如果想赏钱,可以用微信扫描下面的二维码,感谢!
另外再次标注博客原地址  xiaorui.cc

发表评论

邮箱地址不会被公开。 必填项已用*标注