// 遍历 m := map[string]int{"yuzhouwan": 1, "blog": 2,} for k, v := range m { fmt.Printf("%s=%d\n", k, v) }
// 按照 Key 排序后遍历 m := make(map[int]string) m[1] = "a" m[2] = "c" m[0] = "b" var keys []int for k := range m { keys = append(keys, k) } sort.Ints(keys) for _, k := range keys { fmt.Printf("%v : %v\n", k, m[k]) }
接口
说明
1 2 3
type <接口名> interface { <方法名称>() <方法返回值> }
举例
1 2 3 4
type Value interface { String() string Set(string) error }
$ curl -o golang.pkg https://dl.google.com/go/go1.13.3.darwin-amd64.pkg $ sudo open golang.pkg $ go version
command-line-arguments undefined
解决
不要直接右击 main.go 运行,需要同时选中相关的几个 go 程序,再右击运行
working directory is not part of a module
解决
这里以 influxdb-comparisons 项目为例,关键步骤是 go mod init main,完整命令如下:
1 2 3 4
$ cd ~/code/gopath/src/github.com/influxdata/influxdb-comparisons/ $ go mod init main $ go build github.com/influxdata/influxdb-comparisons/cmd/bulk_load_opentsdb $ ./bulk_load_opentsdb
1 2 3 4 5 6
daemon URLs: [http://localhost:8086] SysInfo: Current GOMAXPROCS: 64 Num CPUs: 64 Trend statistics using 30 samples Started load with 1 workers
verifying module: checksum mismatch
解决
1 2 3 4
# 如果是升级导致的,可以清理旧 mod $ go clean -modcache # 如果是私有代码库导致的,可以直接关闭 checksum 功能 $ go env -w GOSUMDB=off
can’t load package
描述
1 2
go: finding module for package github.com/influxdata/influxdb-comparisons/cmd/bulk_load_yuzhouwan can't load package: package github.com/influxdata/influxdb-comparisons/cmd/bulk_load_yuzhouwan: module github.com/influxdata/influxdb-comparisons@latest found (v0.0.0-20200224230202-a75268060881), but does not contain package github.com/influxdata/influxdb-comparisons/cmd/bulk_load_yuzhouwan
解决
1
$ go env -w GO111MODULE=off
补充
auto 默认判断是否启用 module 功能
当前目录在 GOPATH/src 之外且该目录包含 go.mod 文件
当前文件在包含 go.mod 文件的目录下面
off 关闭 module 功能,寻找依赖包的方式将会沿用旧版本那种通过 vendor 目录或者 GOPATH 模式来查找