GO 项目架构

来源:互联网 发布:c语言病毒 编辑:程序博客网 时间:2024/06/16 19:15

一、环境配置

设置GOROOT:  GO的安装路径, 此处设为D:\Program Files\Go\。

设置GOPATH:  GO项目的存放路径,可以多个, 此处设为 D:\workspace_go。

        

新建GO项目存放路径:D:\workspace_go,且在该目录下新建文件夹  bin、pkg、src,其中src 目录用来存储GO项目的代码。

 备注:.go源文件在import 其它包的时候,是去GOROOT/src 和 GOPATH/src 路径下寻找指定的文件夹,如 import (“fmt”,“study_go/base”)会去GOROOT/src 和 GOPATH/src 路径下去寻找fmt 文件夹 和 study_go/base 文件夹。注意是寻找文件夹,而不是文件夹内部的go源文件定义的package。也就是说 go语言的import 语句导入的其实是文件夹,而不是go源文件中定义的package。一个文件夹内的go源文件只能指定一个package,不能指定多个!即同一个文件夹内的所有go源文件必须是同一个package,且通常情况下package名与文件夹名一致。

        

二、新建项目study_go

在D:\workspace_go\src 目录下新建项目文件夹study_go。

        

1、在D:\workspace_go\src \study_go下新建文件夹main

2、在main文件夹下新建Base.go文件:

package mainimport "fmt"func Invoke1() {       fmt.Println("Base invoke1>>>>>>")}

3、在main文件夹下新建Main.go文件:

     

package mainimport (       "fmt")func init() {       fmt.Println("main init......")}func main() {       fmt.Println("hello world!")       Invoke1()}

4、编译main文件夹下的可执行文件:

在任何路径下执行:

go build study_go/main

会在执行路径下生成可执行文件: main.exe

执行main.exe 输出结果:

main init......
hello world!
Base invoke1>>>>>>


备注:(1)同一个文件夹内的所有go源文件必须是同一个package。

(2)相同package中的go源文件可以直接相互调用函数(前提:该函数有开放权限,如函数首字母大写)。


5、在D:\workspace_go\src\study_go下新建文件夹base,

在base文件夹下新建文件Base_1.go文件:

//一个文件夹目录下只能有一个package,且该package通常与文件夹名相同package base1import "fmt"func Invoke1() {       fmt.Println("base.base_1 invoke1>>>>>>")}


此处我们修改Main.go文件:在Main.go文件中引入base文件夹,且在main函数中调用Base_1.go中的方法


package mainimport (       "fmt"       "study_go/base")func init() {       fmt.Println("main init......")}func main() {       fmt.Println("hello world!")       base1.Invoke1()       Invoke1()}

注意:import时导入的是“study_go/base”,是文件夹路径。在调用函数时是base1.Invoke1()。即利用包名进行调用。


重新生成可执行文件并执行,输出结果:

main init......
hello world!
base.base_1 invoke1>>>>>>
Base invoke1>>>>>>


6.在study_go下新建文件夹main2,并在此文件夹下新建一个文件Main2.go

package mainimport (       "fmt")func init() {       fmt.Println("main2 init......")}func main() {       fmt.Println("hello world!")}


编译main2的可执行文件: go build study_go/main2,生成main2.exe。执行输出结果:

main2 init......
hello world!

注意:Main2.go中不能调用main文件夹中的Base.go中的方法,虽然在代码层次,他们都属于同一个main包,但是在编译main2的时候,main2与Base文件夹没有任何关系。而且Main2.go也不能import study_go/main, 因为包含main函数的文件夹不能导入到其他go文件。


包含main()函数的文件夹不能导入到其他go文件。


7. 不划分文件夹

如果study_go项目下不划分文件夹,而是把所有go文件直接放在study_go目录下,所有go文件中的package 都为main。 

编译可执行文件:(1)在study_go目录下执行:go build 。生成study_go.exe

(2)任意目录下执行:go build study_go。生成study_go.exe


0 0
原创粉丝点击