您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
docs/go-cheatsheet.md

1.3 KiB

go (golang) cheatsheet

gopher

external

tools and environment

goimports manages your import lines and should be used instead of fmt, golangci-lint will tell you when you're doing silly things, and gotest will do the same thing as go test but with color output in terminal.

go get golang.org/x/tools/cmd/goimports
go get github.com/golangci/golangci-lint/cmd/golangci-lint@v1.31.0
go get -u github.com/rakyll/gotest

code style

  • obviously, always gofmt
  • run golangci-lint

types and interfaces

Accept and provide String() string method and the associated fmt.Stringer interface.

Accept and provide GoString() string method so %#v (see below) works right.

testing

use testify

import "github.com/stretchr/testify/assert"


func TestSomething(t *testing.T) {
	a := assert.New(t)

    thing, err := functionCall()
    
	t.Logf("%#v", thing)

	a.NotNil(err)
}

use %#v

t.Logf("%#v", eim)

Outputs types with keys, viz:

    inner_test.go:17: &message.InnerMessage{
        ours:(*message.InnerJSONStruct)(nil),
        dstPubKey:(*cbk.CryptoBoxKey)(nil),
        srcPrivKey:(*cbk.CryptoBoxKey)(nil)}