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 中比较常见的 int、string、bool、float 基本数据类型之外还有其他的数据类型可以应用在特殊场景,比如 rune 就是类似于 int32,因为其可表示的字符范围更大,实际工作中可以用来计算字符串的真实长度
GoLand 在保存代码时,可以自动调用 gofmt 和 goimports 实现自动格式化代码,在新版本中可以通过 File Watchers 插件来完成这些配置,配置位置位于File
Go语言中的接口采用的是隐式实现,不需要去申明实现,只需要直接实现接口所定义的全部方法即可,同时区分了直接实现与指针实现两种形态,在实际使用时需要注意和关注
Go 语言如何将 json 键名转为小写开头? struct 中经常用反引号包括起来的字符串,这便是 tag,一般由键值对形式存在,主要用于增强结构体的使用,可用作为判断标识进行补充处理
在 Go 中函数可以接受值传递和指针传递,使用时就涉及到 & 内存地址(指针)与 * 指针赋值的使用,它们的区别是什么?在实际业务使用中,值传递和指针传递的分别应对什么场景需要?针对使用时机进行分析。
对于绝大多数新的 Go 项目而言,因为使用 go modules 管理包依赖从而无需要关注工程的目录位置,但是对于一些旧/历史工程在导入 GoLand 之后会出现全面飘红,这个时候就需要逐一排查问题