如果你对该文章中的内容有疑问/不解,可以点击此处链接提问
要注明问题和此文章链接地址 点击此处跳转
接口
学习接口interface的使用,进行抽象和多态实现。学会定义接口实现结构体。
在Go语言中,接口(interface)主要用于抽象和多态实现,使用方式如下:
- 定义接口
接口使用type和接口命名定义:
type Reader interface {
Read(p []byte) (n int, err error)
}
- 实现接口
结构体实现接口方法即可实现接口:
type File struct {}
func (f File) Read(p []byte) (n int, err error) {
// 实现Read方法
}
- 接口作为参数
函数的参数使用接口作为类型:
func ReadData(r Reader) error {
// r可以是任何实现了Reader接口的对象
}
- 接口组合
一个接口可以包含其他接口的方法集:
type ReadWriter interface {
Reader
Writer
}
这样就可以利用接口进行抽象定义,以及多态灵活实现,是Go语言编程非常重要的技巧。
包管理
写包
好的,来看一个更详细的Go依赖管理示例:
- 创建项目目录并初始化模块
mkdir hello
cd hello
go mod init example/hello
- 编写main.go文件,导入fmt包
package main
import "fmt"
func main(){
fmt.Println("hello world")
}
- 运行
go mod tidy
,会生成go.mod文件:
module example/hello
go 1.17
require (
fmt v0.0.0-00010101000000-000000000000
)
- 使用
go get -u
命令升级依赖
go get -u
go.mod会更新为:
require fmt v0.3.3
- 如果需要指定版本,可以使用
go get pkg@version
go get github.com/pkg/fmt@v0.2.3
-
使用
go mod graph
查看依赖图 -
go mod edit -replace
可以替换本地依赖 -
go list -m all
可以查看总依赖
以上演示了Go Modules的主要用法,可以充分利用来管理Go项目的依赖。
第三方包管理
在Go语言中使用第三方package的主要方式是通过go get命令获取依赖,常用的方法有:
- go get
go get可以下载依赖包,默认会找到该模块的latest release版本:
go get github.com/spf13/cobra
- 指定版本go get
可以使用@版本号来获取指定版本:
go get github.com/spf13/cobra@v1.1.3
- 更新依赖包
使用-u参数可以更新到最新版本:
go get -u github.com/spf13/cobra
- 查看依赖
go list -m all 可以查看当前项目的依赖:
go list -m all
- go mod命令
go mod tidy可以整理依赖,go mod graph可以查看关系图。
正确使用go get和go mod命令可以很好地管理Go模块的第三方依赖。要注意依赖版本的管理。