• Go:如何组织代码


    备注

    此文主要是对官方教程的学习总结,官方教程:http://golang.org/doc/code.html

    工作空间(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

    1 package main //command executable(命令行可执行程序)必须使用main作为package名字。
    2 
    3 import "fmt"
    4 
    5 func main() {
    6     fmt.Print("你好,世界!
    ")
    7 }

    项目结构

    你的第一个类库

    选择一个包路径

    1 happygo.codeplex.com/study/hellolib

    hellolib.go

    1 package hellolib
    2 
    3 func Max(x int, y int) int {
    4     if x >= y {
    5         return x
    6     }
    7 
    8     return y
    9 }

    修改hello.go,调用类库

     1 package main
     2 
     3 import (
     4     "fmt"
     5     "happygo.codeplex.com/study/hellolib"
     6 )
     7 
     8 func main() {
     9     fmt.Print("你好,世界!
    ")
    10     fmt.Printf("2 和 3中最大的是 %d!", hellolib.Max(2, 3))
    11 }

    项目结构

    注意: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

     1 package hellolib
     2 
     3 import "testing"
     4 
     5 func TestMax(t *testing.T) {
     6     const x, y = 2, 3
     7     max := Max(x, y)
     8     if max == x {
     9         t.Error("Max错误!")
    10     }
    11 }

    备注

    大环境搞明白了,语法就快了,再用一天时间学习一下语法,然后用Google App Engine开发个应用试试。

  • 相关阅读:
    TextBox 只有下划线
    can't find web control library(web控件库)
    DropDownListSalesAC”有一个无效 SelectedValue,因为它不在项目列表中。
    IDE、SATA、SCSI、SAS、FC、SSD 硬盘类型
    如何打印1px表格
    CSS控制打印 分页
    Virtual Server could not open its emulated Ethernet switch driver. To fix this problem, reenable the Virtual Server Emulated Et
    Xml中SelectSingleNode方法中的xpath用法
    热带水果莫入冰箱?水果存放冰箱大法
    探索Asp.net的Postback机制
  • 原文地址:https://www.cnblogs.com/happyframework/p/3322292.html
Copyright © 2020-2023  润新知