前言
在极客上看了蔡超老师的Go语言课程 随手记下来的一些随笔,Go的基础应用及实例, 系列内容比较偏基础,推荐给想要入门Go语言开发者们阅读。
目录如下
Go语言基础学习 (一) - 变量 常量已经与其他语言的差异
Go语言基础学习 (二) -Go语言中的类型转与Go语言中的数组切片
Go语言基础学习 (三) - Go语言内的 Map声明使用与工厂模式
Go语言基础学习 (四) - Go语言函数简单介绍
Go语言基础学习 (五) - 面向对象编程
Go语言基础学习 (六) - 编写一个好的错误处理
Go语言基础学习 (七) - 包(package)
Go语言基础学习 (八) - 并发编程
1.构建一个可复用的模块(包)
-
创建一个本地的自用模块/方法(包)package series import ( "errors" "fmt" ) func init() { fmt.Println("init1") } func GetFibonacci(n int) ([]int, error) { if n > 100{ return nil,errors.New("参数不能小于2") } if n < 2 { return nil,errors.New("参数不能大于100") } fibList := []int{1,1} for i :=2; i<n ;i++ { fibList = append(fibList,fibList[i-2]+fibList[i-1]) } return fibList,nil }本地引入包变量(因为我用的是Mac来进行开发的,win或者linux可能不适用这个办法)vim ~/.bash_profile然后将已经写好的本地包的src路径(不用包含src目录),添加到GOPATHexport GOPATH="/Users/yan/go:/User/go_test"在代码内使用package client_test import ( "go_test/src/v15/series" "testing" ) func TestPackage(t *testing.T) { t.Log(series.GetFibonacci(5)) }init1 init3 === RUN TestPackage client_test.go:9: [1 1 2 3 5] <nil> -
本地引入外部包go get -u github.com/easierway/concurrent_map然后在代码内引入import "testing" import cm "github.com/easierway/concurrent_map" func TestConcurrentMap( t *testing.T) { m := cm.CreateConcurrentMap(99) m.Set(cm.StrKey("key"),100) t.Log(m.Get(cm.StrKey("key"))) }cm 是别名,也可以不使用别名 直接concurrent_map.xxx 来使用外部包 -
2. 依赖管理(引入外部包的管理工具)
使用glide 来做依赖管理,首先安装glidebrew install glide安装完成后,到自己代码层目录glide init // 开始glide 包管理初始化然后会生成glide.yaml 版本管理文件内容为我们代码里已经引入的包版本,包名等信息package: go_test/src/v15/remote_package import: [] testImport: - package: github.com/easierway/concurrent_map version: v1.0.0然后我们就可以删除上一步使用 go get 引入的包,再去使用glide来生成vender文件glide install执行完成后就会在根目录下生成一个vender文件里面引入的就是我们刚才使用go get -u 获取的完整包