Golang的工程管理

版权声明:所有的博客都是个人笔记,交流可以留言。未经允许,谢绝转载。。。 https://blog.csdn.net/qq_35976351/article/details/88932639

包管理

包管理是golang大型工程开发的基础,golang的一个完整的工程应该分为3个模块,分别是:

  • src:所有的源代码,必须自己组织创建
  • pkg:源代码编译成的二进制的包,自动生成
  • bin:最终的可执行程序,自动生成。main函数所在的那个文件的包。

golang有两个路径,名称和作用分别是:

  • GOROOT:golang安装的位置,这是安装的时候自动添加的,类Unix系统下通过export $GOROOT查看。Ubuntu18.04LTS通过apt安装的包,需要添加GOROOT=/usr/lib/go
  • GOPATH:这是需要自己配置的,是当前工程所在的目录,配置这个路径的作用是为了更好的使用go的包管理工具。每次开启开发的时候,使用export配置。以该项目为例子,终端输入export GOPATH=~/code/GoProject && source ~/.bashrc

先给出源代码结构:

Golang有个特点,每次开发一个包的文件时,最好都写上测试用例,直接开发测试一起进行;当然,这不是必须的。

每个文件的内容如下:

add.go

package simplemath

func Add(a, b int) int {
    return a + b
}

add_test.go

package simplemath

import "testing"

func TestAdd1(t *testing.T) {
    r := Add(1, 2)
    if r != 3 {
    	t.Errorf("Add(1, 2) failed. Got %d, expected 3", r)
    }
}

sqrt.go

package simplemath

import "math"

func Sqrt(x int) int {
    i := math.Sqrt(float64(x))
    return int(i)
}

sqrt_test.go

package simplemath

import "testing"

func TestSqrt1(t *testing.T) {
    v := Sqrt(16)
    if v != 4 {
        t.Errorf("Sqrt(16) failed. Got %v, expected 4", v)
    }
}

之后转到src目录下,执行:

go install simplemath
go install calc

最终的代码结构:

代码格式化

golang本身对格式化要求就非常严格,但是为了更方便,添加了格式化工具。比如要对simplemath包的源代码进行格式化,直接执行:

go fmt simplemath

代码测试

golang的特点是可以写代码与测试同时进行,每个文文件名称后面添加_test表示对应的测试文件。比如上述的add_test.go就是add.go的测试文件。以包为单位进行测试。比如测试整个simplemath包,转到src目录下,执行:

go test simplemath

测试结果输出:

ok      simplemath      (cached) 

(cached)是之前测试过,第一次测试会出现测试时间。

说明文档

golang的另一个巨大的优势在于,可以直接在编码的时候,集成说明文档。而且说明文档可以像官网的文档那样规范美观,并直接在浏览器中阅读。
新建以工程,src新建一个FOO包,然后新建foo.go函数,之后文件中添加:

v// Copyright 2011 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

/*
这个包用于展示文档说明。整个文档的说明必须紧贴着package

换行的话需要另起一行,下面可以添加BUG的说明
*/
package FOO

import "fmt"

// this is a function note
// function print Hello, World!
func foo(){
    fmt.Println("Hello, World!")
}

// BUG(jack): #1: I'm sorry but this code has an issue to be solved.
// BUG(tom): #2: An issue assigned to another person.

然后

go install FOO
go doc FOO

猜你喜欢

转载自blog.csdn.net/qq_35976351/article/details/88932639
今日推荐