Go:如何组织代码
2016-08-29 12:57
267 查看
原文转载http://www.cnblogs.com/happyframework/p/3322292.html
src:包含了组成packages的源代码,一个目录就是一个package。
pkg:包含了package objects(编译后的类库)。
bin:包含了executable commands(编译后的可执行程序)。
go tool编译packages,然后将编译结果安装到pkg目录或bin目录,下面是一个湿示例:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/23/4ebe9d3aed0e0a3d81f6e88b45633355.png)
hello.go
package main //command executable(命令行可执行程序)必须使用main作为package名字。
import "fmt"
func main() {
fmt.Print("你好,世界!\n")
}
项目结构
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/23/841f1791eac6b1ca9d78aa3aae563582.png)
hellolib.go
package hellolibfunc Max(x int, y int) int { if x >= y { return x } return y}
修改hello.go,调用类库
package mainimport ( "fmt" "happygo.codeplex.com/study/hellolib")func main() { fmt.Print("你好,世界!\n") fmt.Printf("2 和 3中最大的是 %d!", hellolib.Max(2, 3))}
项目结构
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/23/b1ae24f81bbed89e5e0f647448964d51.png)
一些规则:
一个package(文件件)中的所有文件必须使用相同的名字。
Go语言约定import path(导入路径)的最后一个元素是包名字。
Executable Commands必须使用 package main。
文件必要以 _test.go 结尾。
函数名必须包含如下签名:func TestXXX(t *testing.T)。
hellolib_test.go
package hellolib
import "testing"
func TestMax(t *testing.T) {
const x, y = 2, 3
max := Max(x, y)
if max == x {
t.Error("Max错误!")
}
}
Go:如何组织代码
工作空间(Workspaces)
Go代码必须保持在一个workspace,workspace是一个目录结构,他有三个子目录构成:src:包含了组成packages的源代码,一个目录就是一个package。
pkg:包含了package objects(编译后的类库)。
bin:包含了executable commands(编译后的可执行程序)。
go tool编译packages,然后将编译结果安装到pkg目录或bin目录,下面是一个湿示例:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/23/4ebe9d3aed0e0a3d81f6e88b45633355.png)
GOPATH环境变量
GOPATH环境变量指向了Workspace的位置,如果没有设置的话,自己去设置一下,否则go install会执行失败。包路径(Package Path)
标准类库的packages可以使用短名字,如:fmt。对于你自己的Packages,最好提供一个base path(基路径),这可以避免命名冲突,下面是我的命名原则:1 happygo.codeplex.com/study(源代码服务提供商仓库/项目)。
你的第一个程序
选择一个包路径1 happygo.codeplex.com/study/hello
hello.go
package main //command executable(命令行可执行程序)必须使用main作为package名字。
import "fmt"
func main() {
fmt.Print("你好,世界!\n")
}
项目结构
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/23/841f1791eac6b1ca9d78aa3aae563582.png)
你的第一个类库
选择一个包路径1 happygo.codeplex.com/study/hellolib
hellolib.go
package hellolibfunc Max(x int, y int) int { if x >= y { return x } return y}
修改hello.go,调用类库
package mainimport ( "fmt" "happygo.codeplex.com/study/hellolib")func main() { fmt.Print("你好,世界!\n") fmt.Printf("2 和 3中最大的是 %d!", hellolib.Max(2, 3))}
项目结构
![](https://oscdn.geek-share.com/Uploads/Images/Content/202004/23/b1ae24f81bbed89e5e0f647448964d51.png)
注意:Go使用静态链接(会将所依赖的代码链接到一个文件)。
包名字(Package Name)
Go源文件必须以包声明开始:1 package name
一些规则:
一个package(文件件)中的所有文件必须使用相同的名字。
Go语言约定import path(导入路径)的最后一个元素是包名字。
Executable Commands必须使用 package main。
测试集成
Go提供了 go test 命令和 testing package帮助我们做测试,下面是测试的组织规则:文件必要以 _test.go 结尾。
函数名必须包含如下签名:func TestXXX(t *testing.T)。
hellolib_test.go
package hellolib
import "testing"
func TestMax(t *testing.T) {
const x, y = 2, 3
max := Max(x, y)
if max == x {
t.Error("Max错误!")
}
}
相关文章推荐
- Go:如何组织代码
- 如何组织你的javascript代码
- 【技术原创】如何在SilverLight/WPF中用代码给DataGrid动态组织模板内容
- Unity3D如何有效地组织代码?(转)
- Unity3D如何有效地组织代码?
- 如何组织你的javascript代码
- 如何组织代码使得代码的效率高
- 如何用代码组织多个Storyboard(故事板)
- 如何在c#代码中执行带GO语句的SQL文件
- 如何搭建轻量级架构-代码组织篇
- 如何在c#代码中执行带GO语句的SQL文件
- 如何组织大型JavaScript应用中的代码?
- 如何在c#代码中执行带GO语句的SQL文件
- unity3d如何 有效地组织代码
- DDD:订单管理 之 如何组织代码
- 如何编写Go 代码 {How to Write Go Code}
- 如何组织大型JavaScript应用中的代码?
- 如何组织大型JavaScript应用中的代码?
- unity3d如何有效地组织代码?
- Unity3D如何有效地组织代码?