Go1.11版本开始支持包依赖管理,无需自行下载依赖到GoPath的src下,相当好用。
go get / go mod 命令下载依赖时,经常需要访问 github/golang.org 等网站。
如果公司的网络不具备访问这些网站时,初始化工程就会变得异常的困难。
因此,配置代理就显得非常使用。
目前比较常见的代理网站如下,各网站都提供了详细的配置说明。
// 打开包管理能力
go env -w GO111MODULE=on
// 配置代理地址
go env -w GOPROXY=https://goproxy.cn,direct
// 关闭代理
go env -u GOPROXY
// 查看go环境变量
go env
// 以JSON格式输出go环境变量
go env -json
注意需要是1.11+
// 打开包管理能力
export GO111MODULE=on
// 配置代理地址
export GOPROXY=https://goproxy.cn
// 关闭代理
export GOPROXY=
一般很少这么用。
go mod 提供了 replace 方式来指定替换包的地址。
如果第三方包中引用墙外的包,就需要手动修改他们了,不如代理方式方便。
module github.com/exercise
require (
golang.org/x/text v0.3.0
gopkg.in/yaml.v2 v2.1.0
)
replace (
golang.org/x/text => github.com/golang/text v0.3.0
)
需要注意 Go 1.13+ 的配置方式和之前的有所区别即可。
不再是取外部的公共变量,而是 Go 特有的环境变量。
当前累计3条观点!一起看看吧!
在 Go 中函数可以接受值传递和指针传递,使用时就涉及到 & 内存地址(指针)与 * 指针赋值的使用,它们的区别是什么?在实际业务使用中,值传递和指针传递的分别应对什么场景需要?针对使用时机进行分析。
GoLand 在保存代码时,可以自动调用 gofmt 和 goimports 实现自动格式化代码,在新版本中可以通过 File Watchers 插件来完成这些配置,配置位置位于File
对于绝大多数新的 Go 项目而言,因为使用 go modules 管理包依赖从而无需要关注工程的目录位置,但是对于一些旧/历史工程在导入 GoLand 之后会出现全面飘红,这个时候就需要逐一排查问题
Go 中比较常见的 int、string、bool、float 基本数据类型之外还有其他的数据类型可以应用在特殊场景,比如 rune 就是类似于 int32,因为其可表示的字符范围更大,实际工作中可以用来计算字符串的真实长度
调试 Go 程序报错 xx is shadowed during return,方法在返回的时候不是预期的返回结果,错误的产生应当是在相同作用域中出现了同名的变量导致,根据实际业务场景进行修改
Go语言中的接口采用的是隐式实现,不需要去申明实现,只需要直接实现接口所定义的全部方法即可,同时区分了直接实现与指针实现两种形态,在实际使用时需要注意和关注