- Tools -> file wathers 中增加:
- go fmt
- 手动处理:
gofmt -l -w .
- 手动处理:
- goimports
- 手动处理:
goimports -l -w .
- 手动处理:
- 自定义:
go二进制
+ 参数
- go fmt
-
设置环境变量
export GO111MODULE=on
-
在项目中执行
go mod init [module]
生成go.mod
文件 -
执行
go mod vendor
生成vendor文件 -
依赖按照配置
go env -w GOPROXY=https://goproxy.cn,direct
go env -w GOPRIVATE=*.gitlab.demo.net
-
安装依赖
go get -u -m xxx@v1.0.0
,如果拉不到项目增加参数go get -u -insecure -v xxx@v1.0.0
-
获取所有的依赖
go list -m all
-
replace
用法:go.mod
中增加
replace github.com/Kucoin/kucoin-go-sdk => github.com/sh7ning-mirror/kucoin-go-sdk v1.0.8
- 执行
go get -u -m github.com/Kucoin/kucoin-go-sdk
- 分析潜在的bug:
go vet .
-
从map中删除元素:
delete(timeZone, "PDT")
-
通过反射获取,如:
reflect.TypeOf(i)
-
i.(type)
只能在switch
中使用,函数没有返回值,如:func checkType(i interface{}) string { switch i.(type) { case string: return "string" case int: return "int" default: return "unknown" } }
-
采用断言的方式,如:
func getString(i interface{}) string { v, ok := i.(string) if ok { return "type: string, v: " + v } return "unknown" }
如果只是需要知道类型,不需要判断,可以尝试用
%#v
打印变量在golang中的定义获取,如果是打印 []byte类型还可以采用%q
或%#q
,也可以用%T
打印变量类型,用%p
可以打印指针和切片的地址,判断是否是同一个。
// Package stringutil contains utility functions for working with strings.
package stringutil
// Reverse returns its argument string reversed rune-wise left to right.
func Reverse(s string) string {
r := []rune(s)
for i, j := 0, len(r)-1; i < len(r)/2; i, j = i+1, j-1 {
r[i], r[j] = r[j], r[i]
}
return string(r)
}
...
用法
x := []int{1, 2, 3}
y := []int{4, 5, 6}
x = append(x, y...)
fmt.Println(x)
panic
只会 被当前协程defer
,不会抛到main
type Config struct {
Site Site
Email *Email
}
用 c.Email != nil
判断即可
-
只测试指定方法
go test -run="Test指定方法"
CGO_ENABLED=0 go build -ldflags '-s -w' xx.go
go test --bench=. -v -test.benchmem
调优
https://studygolang.com/articles/9693
https://www.cnblogs.com/xiaopingfeng/p/9998649.html
Golang gc