go语言中如何安装第3方的包

go第三方包的安装地址

然后引入第三方的包

1,初始化项目 go mod init 项目名称

2,在项目中使用这个包,下载依赖 go mod tidy

go 复制代码
package main

import (
	"fmt"
	"github.com/shopspring/decimal"  // 引入这个包
)

func main() {
	price, err := decimal.NewFromString("136.02")
	if err != nil {
		panic(err)
	}
	fmt.Println(price)
}

执行go mod tidy 安装依赖报错

vbnet 复制代码
day01.go PS D:\study\goxm>  go mod tidy

go: finding module for package github.com/shopspring/decimal

go: goStudy imports

github.com/shopspring/decimal: module github.com/shopspring/decimal: Get " https://proxy.golang.org/github.com/shopspring/decimal/@v/list ": dial tcp 142.250.197.241:443: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond 

报错原因 :Go 默认从proxy.golang.org (Google 服务器)下载第三方包,该地址在国内被屏蔽,连接超时。 修复方式 :执行一条命令把代理换成国内镜像(永久生效,已写入 Go 环境配置):

bash 复制代码
go env -w GOPROXY=https://goproxy.cn,direct  

goproxy.cn :七牛云维护的国内 Go 模块镜像

,direct :镜像里没有的包再回源直连

以后所有go mod tidy 、go get 都会走国内镜像,不会再出现这个超时错误。go.sum 和 go.mod 也已自动更新并加入了decimal v1.4.0 依赖。

解决办法, 当前项目下设置代理

go env -w GOPROXY=goproxy.cn,direct

当我们成功运行 go mod tidy

当前目录下,会多一个 go sum这样一个文件

这个时候时候第3方包就不会报错了

go 复制代码
package main

import (
	"fmt"

	"github.com/shopspring/decimal"
)

func main() {
	price, err := decimal.NewFromString("136.02")
	if err != nil {
		panic(err)
	}
	fmt.Println(price)
}

安装第3方包的步骤

1、go mod init 项目名称; 表示初始化这个项目

2、在需要的文件中引入第3方的包

go 复制代码
import (
	"fmt"
	"github.com/shopspring/decimal"
)

3、go mod tidy 进行下载依赖,这个时候就会现在这个文件中使用到的第3方的包

4、运行项目

如果运行别人的项目

在运行别人项目的时候,我们看见别人的项目文件是这样的

go 复制代码
package main
import (
	"fmt"
	"github.com/shopspring/decimal"
)
func main() {
	price, err := decimal.NewFromString("136.02")
	if err != nil {
		panic(err)
	}
	fmt.Println(price)
}

由于我们本地没有安装依赖,因此需要执行

go mod init 项目名称; 表示初始化这个项目

然后执行 go mod tidy 进行下载依赖

最后运行项目

相关推荐
小蒜学长1 小时前
基于Spring Boot+Vue的“禾源”农产品销售系统设计与实现(代码+数据库+LW)
java·spring boot·后端·农产品销售系统·产品溯源
用户EasyAdminBlazor1 小时前
EasyAdminBlazor 审批事务:为什么审批失败必须全部回滚?
后端
计算机魔术师1 小时前
我让AI教学生写前端,三天后课堂变了——Web教育者的集体反思
后端
Wx-bishekaifayuan2 小时前
springboot房屋租赁系统11574-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·sql·spring·课程设计
青山木2 小时前
秒杀系统设计(二):数据正确性——防超卖、分布式锁与一人一单
分布式·后端·mysql·中间件·架构
KING-WU5123 小时前
Linux 工具之 yum、vim、gcc
linux·运维·服务器·后端
蜗牛互联网3 小时前
GPT-6.1 Sol迁移指南:从token单价转向每任务成本门禁
java·人工智能·后端·gpt
IT_陈寒3 小时前
Redis键过期失效?这个坑我踩得明明白白
前端·人工智能·后端
蜗牛互联网3 小时前
HSTU在Dynamo-Triton中的AOTI与KV缓存验收方法
java·人工智能·后端·缓存