Go:如何组织代码

cjf1002361126 · · 2268 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

原文转载http://www.cnblogs.com/happyframework/p/3322292.html

Go:如何组织代码


工作空间(Workspaces)

Go代码必须保持在一个workspace,workspace是一个目录结构,他有三个子目录构成:

  1. src:包含了组成packages的源代码,一个目录就是一个package。
  2. pkg:包含了package objects(编译后的类库)。
  3. bin:包含了executable commands(编译后的可执行程序)。

go tool编译packages,然后将编译结果安装到pkg目录或bin目录,下面是一个湿示例:

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")
}

项目结构

你的第一个类库

选择一个包路径

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))}

项目结构

注意:Go使用静态链接(会将所依赖的代码链接到一个文件)。

包名字(Package Name)

Go源文件必须以包声明开始:

1 package name

一些规则:

  1. 一个package(文件件)中的所有文件必须使用相同的名字。
  2. Go语言约定import path(导入路径)的最后一个元素是包名字。
  3. Executable Commands必须使用 package main。

测试集成

Go提供了 go test 命令和 testing package帮助我们做测试,下面是测试的组织规则:

  1. 文件必要以 _test.go 结尾。
  2. 函数名必须包含如下签名: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错误!")
    }
}



有疑问加站长微信联系(非本文作者)

本文来自:CSDN博客

感谢作者:cjf1002361126

查看原文:Go:如何组织代码

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2268 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传