![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Go
runzhliu
毕业于中山大学,目前专注于容器和大规模并行计算
展开
-
【Go】goproxy设置
国内用户如果出现 go mod download 无法下载依赖的,执行下面的命令。go env -w GOPROXY="https://goproxy.cn, direct"原创 2022-02-12 09:13:05 · 2031 阅读 · 0 评论 -
gorm字段类型设置成map
一开始我的结构体是这样的。type AddRuleForm struct { Name string Cluster string Alert string Rule string Expr string For string Labels map[string]string Annotations map[string]string Desc string}想把一个字段设置成 m原创 2022-01-12 14:47:38 · 1494 阅读 · 0 评论 -
【Go】go mod出现unknown revision
项目使用 Go mod 比较常见的一个问题就是 unknow revsion,如下图。这里的原因有可能有很多,但不管什么原因,本质的几个原因一定要清楚的,不然就会陷入无法解决问题的困境中。一定要清楚,go mod 用的是 go get,go get 调用的是 git,git 分为 https 或者 ssh,沿着这个线索,基本上就能找到原因。高阶一点的可以去看一下 Go 的源码,看下 get 的工具是如何运用 git 来控制依赖的。我这里碰到的问题是因为本地的 /root/.gitconfig/ 受到了原创 2021-05-09 11:00:12 · 7580 阅读 · 0 评论 -
【Goland】巧妙用批量替换Replace
今天想提一嘴 IDE 的一个功能,就是批量替换,Replace in Path,大家可以按快键键 commnd + , 进入 Preference,然后搜索 Keymap,也就是快键键,然后搜索 Replace,找到批量替换的快键键(因为快键键就是快而且方便)。OK,知道了快键键在哪里,就说一下场景。组里有几个项目的 module path 有问题,在转 go mod 的时候,如果这个 module path 不存在在远程仓库,就无法由 go mod 去 go get 了(不考虑在go.mod里的rep原创 2021-03-31 08:55:44 · 11076 阅读 · 0 评论 -
【Go】confluent-kafka-go的编译问题
最近在给组里用到的镜像瘦身,也就是用一个更轻一点的基础镜像来重新构建服务的镜像,然后发现我们的项目 indirect 依赖到了 confluent-kafka-go,然后这玩意是需要在本地环境用到 librdkafka,这是一个用 C++ 写的 Kafka 的库,如果不熟悉 C++的朋友,搞起来就会很费劲。说下编译遇到的问题,本地执行 go build 发现下面的报错。gopkg.in/confluentinc/confluent-kafka-go.v1/kafka# pkg-config --cfl原创 2021-03-11 13:05:41 · 1761 阅读 · 0 评论 -
【Prometheus】看着Prometheus学Golang(1)
一直觉得自己的 Golang 水平一般般,所以决定还是找个开源项目好好学一下,虽然说按我的水平不见得就能看出来哪个项目写的好,但至少开源的而且被广泛使用,包括我自己的项目,还是有点信心的,所以就挑 Prometheus 来学。首先比较感兴趣的是 discovery 模块,因为这个模块相对比较独立,单独拉出来可能会比较容易理解吧,这里的功能简单来说就是当用户添加一些 targets 或者 endpoint,反正就是你需要采集的数据的来源如果没增加一个,你就需要手动去 prometheus.yml 这个文件加原创 2021-02-13 10:56:37 · 138 阅读 · 0 评论 -
【Golang】no matching versions for query “latest“
虽然看到有些旧项目直接通过 require 可以用,但是如果 latest 的包对 go.mod 修改过,比如变成 v2 之类的,例如下面这个项目,他是 workd的。但是这依然不代表你可以这么用,最好用 replace 一下,跟引用的依赖保持一致,如图一,这样就可以用了。...原创 2021-01-12 17:29:22 · 9406 阅读 · 0 评论 -
【Golang】go get遇到git fetch-pack: expected shallow list
https://github.com/golang/go/issues/38373原创 2020-08-02 10:24:05 · 5921 阅读 · 0 评论 -
Version of Delve is too old for this version of Go【Goland Debug】报错
最近升级了 Go 到 1.14,发现使用 Goland debug 程序的时候报错了。完整的报错信息如下。API server listening at: 127.0.0.1:53951Version of Delve is too old for this version of Go (maximum supported version 1.13, suppress this error with --check-go-version=false)Debugger finished with ex原创 2020-06-12 12:14:02 · 9451 阅读 · 1 评论 -
烦人的 Go Proxy
Q内 + 公司的网络环境,有时候代理尤其是 Go 的 Proxy 能把人折腾死。# 亲测 goproxy.io 有些包不全go env -w GO111MODULE=ongo env -w GOPROXY=https://goproxy.io,direct# 设置不走 proxy 的私有仓库,多个用逗号相隔(可选)go env -w GOPRIVATE=*.oa.com# Go 给...原创 2020-04-27 11:32:40 · 930 阅读 · 0 评论 -
Go mod 常见问题(持续更新)
module declares its path as这需要用到 go mod 的 replace 来调整,具体就是往 go.mod 插入一条记录。replace github.com/coreos/bbolt v1.3.4 => go.etcd.io/bbolt v1.3.4used for two different module paths很神奇,replace 两次...原创 2020-04-05 07:51:47 · 14582 阅读 · 3 评论 -
Go语言函数间传递切片的问题
GoInActionGo 语言函数间传递切片,也是在函数间以值传递的方式进行的,由于切片的大小比较小,在函数间复制和传递的成本是比较低的。// 分配包含100w个整型值的切片slice := make([]int, 1e6)// 将 slice 传递到函数 fooslice = foo(slice)// 函数 foo 接收一个整型切片,并返回这个切片func foo(slic...原创 2020-02-10 20:38:15 · 742 阅读 · 0 评论 -
Go语言函数间传递数组的问题
大家都知道,Go 语言中,数组是分配连续内存的,也就是说,在函数中传递一个大数组,代价是很高的,例如:// 声明了一个8 MB 的数组// 8 * 10^8 = 8 * 100000000 Bitarray := [1e6]int// 将入有个 foo() 函数foo(array)这样的话,每次调用 foo() 函数的时候,都会在栈上分配8 MB 的内存,因为函数之间传递变量时,是...原创 2020-02-10 09:40:25 · 906 阅读 · 0 评论 -
Go语言整数值转字符串的效率问题
文章目录参考 Go in Action标准库提供了三种方法可以将整数值转为字符串。fmt.Sprintfstrconv.FormatIntstrconv.Itoa运行下面的代码,可以得到三种方法的基础测试结果。package testimport ( "fmt" "strconv" "testing")func BenchmarkSprintf(b *test...原创 2020-02-05 17:20:14 · 566 阅读 · 0 评论 -
Go 学习笔记-1
今天在编译一个 Go 的项目的时候,然后将可执行文件放在 Docker 容器中运行,发现报错了。报错的信息是这样的。# tf-submit 是我的二进制执行文件sh: 42: /usr/bin/tf-submit: Exec format error我的 Dockerflie 很简单,是先 go build 了 Go 项目,然后再将二进制文件置入 /usr/bin/ 目录下。FROM &...原创 2019-09-01 22:32:00 · 145 阅读 · 0 评论 -
How go build works
文章目录1 Overview2 go build3 Summary1 Overview最近新入 Go 的坑,因为维护一个旧项目,对 go build 百思不得其解,记录一下心路历程…2 go buildgo 命令的执行取决于我们是针对普通的包还是特殊的 main 包。对于包go build 构建包,然后放弃这个构建结果。go install 构建包,然后将包放在 $GOPATH/...原创 2019-08-20 14:13:43 · 135 阅读 · 0 评论