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
- GO 项目架构
- 项目Go配置过程
- Go 项目结构层次
- go项目make
- Go 语言项目管理
- Go项目目录管理
- go语言上手项目
- Go项目目录管理
- go项目测试
- go项目目录结构
- 【Go】项目目录结构
- Go项目目录管理
- go get 获取安装go项目
- 项目架构
- 项目架构
- 项目架构
- 项目架构
- Go项目开发----2048小游戏
- 对数据进行转码
- 计算机网络常见面试题
- 周志华《机器学习》课后习题解答系列(六):Ch5.5
- 8位uuid
- 初识RxJava
- GO 项目架构
- 下拉菜单触发方式设计案例
- 微信小程序第四天(微信小程序支付)
- 如何去掉powered by ShareSDK字样
- 出现 com.caucho.hessian.io.HessianServiceException: The service has no method named: XXX 异常的原因及解决方法
- Fractal (分形)
- C++应用程序出现 0xc0150002 错误导致无法启动跟踪解决
- 2017年Java方向相关使用报告
- Java可变字符串