问题记录
记录遇到的问题
wohu007
这个作者很懒,什么都没留下…
展开
-
Golang 要注意的陷阱和常见错误
原文: 50 Shades of Go: Traps, Gotchas, and Common Mistakes for New Golang Devs 翻译: Go的50度灰:新Golang开发者要注意的陷阱、技巧和常见错误 , 译者: 影风LEYGo 是一门简单有趣的语言,但与其他语言类似,它会有一些技巧。。。这些技巧的绝大部分并不是 Go 的缺陷造成的。如果你以前使用的是其他语言,那么这其中的有些错误就是很自然的陷阱。其它的是由错误的假设和缺少细节造成的。如果你花时间学习这门语言,阅读官方说明、转载 2020-05-27 22:04:29 · 5275 阅读 · 0 评论 -
使用 Go module 后 VScode 智能提示不生效解决方案
关闭 Use Language Server如果你对这个选项有打钩先取消,然后重启 vscode 。安装 gocodego install github.com/stamblerre/gocode@latest原创 2021-12-05 16:42:13 · 1617 阅读 · 0 评论 -
非本地类型不能定义方法 cannot define new methods on non-local type time.Duration
能够随意地为各种类型起名字,是否意味着可以在自己包里为这些类型任意添加方法 ? 参见下面的代码演示 :package mainimport "time"type MyDuration = time.Durationfunc (m MyDuration) Set() {}func main() {}编译后报错:./temp.go:7:6: cannot define new methods on non-local type time.Duration编译器提示:不能在一个非本原创 2021-09-25 16:16:16 · 1610 阅读 · 0 评论 -
fatal error all goroutines are asleep - deadlock!
先看下面代码package mainimport ( "fmt" "time")func main() { ch1 := make(chan int) go func() { fmt.Println(<-ch1) }() ch1 <- 1 time.Sleep(time.Second)}一般来讲,可以正常运行,因为 go func() 的调度执行需要一点时间,而此时主 goruntine 继续往下执行,等到主 goruntine 执行发送通道操作原创 2020-11-13 22:20:34 · 270 阅读 · 0 评论 -
Go 中切片索引与 Python 中列表索引的差异
1. 索引编号超过对象的实际长度1.1 Python 列表索引Python 2.7.12 (default, Nov 12 2018, 14:36:49) [GCC 5.4.0 20160609] on linux2Type "help", "copyright", "credits" or "license" for more information.>>> a = [1,2,3,4,5,6,7]>>> a[0:10][1, 2, 3, 4, 5, 6,原创 2020-11-12 22:21:31 · 981 阅读 · 0 评论 -
Golang 元素值在经过通道传递时会被复制,这个复制是浅复制
1. channel 元素值为切片package mainimport ( "fmt")func main() { ch := make(chan []int, 3) s := []int{1, 3, 4} ch <- s fmt.Printf("s length is %d, cap is %d\n", len(ch), cap(ch)) fmt.Printf("s address is %p\n", &s) r := <-ch r[0] = 2原创 2020-11-11 22:59:21 · 1369 阅读 · 0 评论 -
模块级私有访问权限 internal 包的使用规则,use of internal package xxx not allowed
在 Go 1.5 及后续版本中,可以通过创建 internal 代码包让一些程序实体仅仅能被当前模块中的其他代码引用。这是第三种访问权限:模块级私有。具体规则是:internal 代码包中声明的公开程序实体仅能被该代码包的直接父包及其子包中的代码引用。当然,引用前需要先导入这个 internal 包。对于其他代码包,导入该 internal 包都是非法的,无法通过编译。这里的名称必须是 internal 。代码目录结构如下:wohu@wohu:~/GoCode/src$ tree chapt原创 2020-11-10 22:13:45 · 8940 阅读 · 1 评论 -
Go 语言同一个包内函数调用、包名和实际路径最后一个目录不一致问题
以下代码的 GOPATH 路径为 "/home/wohu/GoCode"1. 同一个包内的函数可以相互调用代码结构如下:wohu@wohu:~/GoCode/src$ tree temptemp├── chapter│ ├── demo1│ │ ├── demo1.go│ │ └── demo1_lib.godemo1.go 源码如下:package mainfunc main() { name := "wohu" hello(name) // 调用以小写字原创 2020-11-02 22:35:59 · 3491 阅读 · 0 评论 -
cannot find package “github.com/json-iterator/go“cannot find package “github.com/modern-go/reflect2“
1. 问题现象../github.com/coreos/etcd/client/json.go:18:2: cannot find package "github.com/json-iterator/go" in any of: /usr/local/go/src/github.com/json-iterator/go (from $GOROOT) /home/wohu/GoCode/src/github.com/json-iterator/go (from $GOPATH)2. 解决方案g原创 2020-10-23 22:07:42 · 676 阅读 · 0 评论 -
cannot find package “github.com/coreos/go-systemd/journal”
1. 问题现象使用 golang etcd 导入包 github.com/coreos/etcd/clientv3 库时有如下错误:../github.com/coreos/etcd/pkg/logutil/zap_journal.go:29:2: cannot find package "github.com/coreos/go-systemd/journal" in any of: /usr/local/go/src/github.com/coreos/go-systemd/journal (fr原创 2020-08-10 23:16:12 · 1183 阅读 · 2 评论 -
golang etcd 报错 undefined: resolver.BuildOption 解决方案
1. 问题现象import ( "github.com/coreos/etcd/clientv3")在使用 github.com/coreos/etcd/clientv3 时代码报以下错误:# github.com/coreos/etcd/clientv3/balancer/resolver/endpoint../github.com/coreos/etcd/clientv3/balancer/resolver/endpoint/endpoint.go:114:78: undefined:原创 2020-08-10 22:40:40 · 3143 阅读 · 3 评论 -
go get 无法下载问题解决方案及下载 aliyun-oss-go-sdk incompatible.info
1. 问题现象由于众所周知的原因,使用 go get 时往往会速度很慢或者压根无法下载下来,如下所示:wohu@wohu:/$ go get -v github.com/aliyun/aliyun-oss-go-sdk/ossgithub.com/aliyun/aliyun-oss-go-sdk (download)Fetching https://golang.org/x/time/rate?go-get=1https fetch failed: Get https://golang.org/x原创 2020-07-09 23:23:07 · 3136 阅读 · 0 评论 -
golang 同一个包中函数互相调用报错 undefined 以及在 VSCode 中配置右键执行整个包文件
1. 代码结构demo 文件夹下有两个文件,分别为 hello.go 和 main.go ,结构如下:wohu@wohu:~/GoCode/src$ tree demo/demo/├── hello.go└── main.go0 directories, 2 fileswohu@wohu:~/GoCode/src$ hello.go 文件内容为:package mainimport "fmt"func hello() { fmt.Println("hello, world"原创 2020-06-29 22:26:24 · 13726 阅读 · 7 评论 -
Go 中 time.Parse 报错:year/month/day hour/minute/second out of range 时间格式化为什么是 2006-01-02 15:04:05?
1. 问题现象在使用 Go 语言的 time.Parse 解析时间时遇到以下错误:func main() { timeParse, err := time.Parse("2006-11-02 15:04:05", "2020-05-22 10:25:30") if err != nil { fmt.Println("time parse failed: ", err) } fmt.Printf("timeParse is %v, type is %T", timeParse, time原创 2020-05-23 21:12:44 · 2768 阅读 · 0 评论 -
golang log4go 使用说明及丢失日志原因
1. 描述这个 repository 是从 alecthomas 的 log4go 重构而来的,log4go 是一个类似于用于 Java 编程语言的 log4j 的日志包。源于 Google 的一项 log 工程,官方已经停止维护更新。仓库地址:https://github.com/jeanphorn/log4go.git2. 特点日志输出到终端日志输出到文件,支持按大小和时间切片日志输出到网络日志异步输出支持 json 文件配置日志分类不同类别的日志,输出到不同的printer中原创 2020-05-15 22:33:12 · 1279 阅读 · 0 评论 -
VS Code go 插件安装失败 r.declReader.Reset undefined
在安装完 VS Code 后开始安装 go 的插件发现有如下错误wohu@wohu:~/GoCode/src$ go install github.com/nsf/gocode# github.com/nsf/gocodegithub.com/nsf/gocode/package_ibin.go:99: r.declReader.Reset undefined (type bytes.Rea...原创 2019-08-02 22:30:34 · 421 阅读 · 0 评论