需要提前设置好GOPATH,GOPATH的目录,需要存在src文件夹才行,具体的代码包,需要在src下面进行创建
学习目标:创建一个实现斐波那契数列的包,并且能够正常进行调用
在GOPATH/src目录下,新建目录结构Class21,并在该目录下新建GetFIbList.go代码文件:
package src
import (
"errors"
"fmt"
)
// 初始化函数,自动掉调用
// 一个包可以有多个init,会按照顺序执行一次
func init() {
fmt.Println("run init1")
}
func init() {
fmt.Println("run init2")
}
func GetFibList(n int) ([]int, error) {
if n < 1 || n > 100 {
return nil, errors.New("N is cannot less 1 or cannot larger 100")
}
fib := []int{1, 1}
for i := 2; i < n; i++ {
fib = append(fib, fib[i-2]+fib[i-1])
}
return fib, nil
}
复制代码
同样在Class21下新建测试代码文件 test/fib_test.go
package test
import (
"Class21"
"fmt"
"testing"
)
func TestFibList(t *testing.T) {
var fibList []int
fibList, _ = Class21.GetFibList(5)
fmt.Println(fibList)
}
复制代码
运行 go test -v .\fib_test.go
run init1
run init2
=== RUN TestFibList
[1 1 2 3 5]
--- PASS: TestFibList (0.00s)
PASS
ok command-line-arguments (cached)
复制代码
值得注意的是,在包里面,是可用多次定义init函数的,而且在加载包的时候,会依次对init执行一次