欢迎光临
感谢一路有你

学习go语言Day3

如果你对该文章中的内容有疑问/不解,可以点击此处链接提问
要注明问题和此文章链接地址 点击此处跳转
 

接口

学习接口interface的使用,进行抽象和多态实现。学会定义接口实现结构体。

在Go语言中,接口(interface)主要用于抽象和多态实现,使用方式如下:

  1. 定义接口
    接口使用type和接口命名定义:

<code class="language-go">type Reader interface {
  Read(p []byte) (n int, err error) 
}
</code>
  1. 实现接口
    结构体实现接口方法即可实现接口:

<code class="language-go">type File struct {}
func (f File) Read(p []byte) (n int, err error) {
  // 实现Read方法
}
</code>
  1. 接口作为参数

函数的参数使用接口作为类型:


<code class="language-go">func ReadData(r Reader) error {
  // r可以是任何实现了Reader接口的对象
}
</code>
  1. 接口组合

一个接口可以包含其他接口的方法集:


<code class="language-go">type ReadWriter interface {
  Reader 
  Writer
}
</code>

这样就可以利用接口进行抽象定义,以及多态灵活实现,是Go语言编程非常重要的技巧。

包管理

写包

好的,来看一个更详细的Go依赖管理示例:

  1. 创建项目目录并初始化模块

<code class="language-bash">mkdir hello
cd hello
go mod init example/hello
</code>
  1. 编写main.go文件,导入fmt包

<code class="language-go">package main

import &quot;fmt&quot;

func main(){
  fmt.Println(&quot;hello world&quot;) 
}
</code>
  1. 运行 go mod tidy,会生成go.mod文件:

<code>module example/hello

go 1.17

require (
  fmt v0.0.0-00010101000000-000000000000 
)
</code>
  1. 使用go get -u命令升级依赖

<code>go get -u 
</code>

go.mod会更新为:


<code>require fmt v0.3.3
</code>
  1. 如果需要指定版本,可以使用go get pkg@version

<code>go get github.com/pkg/fmt@v0.2.3
</code>
  1. 使用go mod graph查看依赖图

  2. go mod edit -replace可以替换本地依赖

  3. go list -m all可以查看总依赖

以上演示了Go Modules的主要用法,可以充分利用来管理Go项目的依赖。

第三方包管理

在Go语言中使用第三方package的主要方式是通过go get命令获取依赖,常用的方法有:

  1. go get

go get可以下载依赖包,默认会找到该模块的latest release版本:


<code>go get github.com/spf13/cobra
</code>
  1. 指定版本go get

可以使用@版本号来获取指定版本:


<code>go get github.com/spf13/cobra@v1.1.3
</code>
  1. 更新依赖包

使用-u参数可以更新到最新版本:


<code>go get -u github.com/spf13/cobra
</code>
  1. 查看依赖

go list -m all 可以查看当前项目的依赖:


<code>go list -m all
</code>
  1. go mod命令

go mod tidy可以整理依赖,go mod graph可以查看关系图。

正确使用go get和go mod命令可以很好地管理Go模块的第三方依赖。要注意依赖版本的管理。

赞(0) 打赏
未经允许不得转载:王明昌博客 » 学习go语言Day3
分享到: 更多 (0)

相关推荐

  • 暂无文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

×
订阅图标按钮