go语言学习笔记——创建package

需要提前设置好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执行一次

猜你喜欢

转载自juejin.im/post/7042954473307635719