构建可复用的模块(包)

package

1.package是GO基本复用模块单元
以首字母大写来表明可被包外代码访问
2.代码的package可以和所在目录不一致
两个源文件的包起了不同的名字
3.同一目录的Go代码的package要保持一致

通过go get来获取远程依赖
go get -u 强制从网络更新远程依赖
注意代码在GitHub上的组织形式,适应go get
直接以代码路径开始,不要有src

init方法

再main执行前,所有依赖的package的init方法都会被执行
不同包的init函数按照包导入的历来关系决定执行顺序
每个包可以有多个init函数
包的每个源文件也可以有多个init函数,这点比较特殊

GoLand中报错package xxx is not in GOROOT

1.在设置里面增加GoRoot(全局)GoPATH(项目)
2.关闭其他包管理模式 go env -w GO111MODULE=off

如何调用package

//调用端 client/package_test.go
package client

import (
	"ch15/series"
	"testing"
)

func TestPackage(t *testing.T)  {
	t.Log(series.GetFibonacciSeries(5))
	t.Log(series.Square(5))
}
//被调用端 service/my_service.go
package series

import "fmt"

func init()  {
	fmt.Println("init1")
}
func init()  {
	fmt.Println("init2")
}
func init()  {
	fmt.Println("init3")
}

func Square(n int) int  {
	return n * n
}

//为了包引用,不使用test
func GetFibonacciSeries(n int) [] int {
	//切片
	ret := []int{1,1}
	for i:=2; i < n;i++{
		ret = append(ret,ret[i-2]+ret[i-1])
	}
	return ret
}

如何使用一个远程的package

ConcurrentMap for GO
线程安全的Map 使用读写锁让线程安全
go get -u weburl

通过go get 来获取远程依赖
go get -u 强制从网络更新远程依赖
注意代码在GitHub上的组织形式 以适应go get
直接以代码路径开始 不要有src
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值