你正在使用哪个版本的Go( go version
)?
go version go1.10.2 darwin/amd64
这个问题在最新版本中是否重现?
是的
你正在使用什么操作系统和处理器架构( go env
)?
GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/matt/Library/Caches/go-build"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/matt/Dev"
GORACE=""
GOROOT="/usr/local/go"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
GCCGO="gccgo"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/d4/3d8k5bgd62v9h2c5f05xkyx80000gn/T/go-build921281437=/tmp/go-build -gno-record-gcc-switches -fno-common"
你做了什么?
开始编写一个 else
语句,但被其他程序中的一个问题分心,没有完成这个语句。肯定是我的错!然而,gofmt made this bug a little harder to find :
https://play.golang.org/p/AdIDE1dT9Sd
注意到下一个语句是一个 if
,它们之间有一个注解。由于这个注解。 go fmt
没有将 if
移动到与 else
在同一行的位置。这似乎是正确的,但是,由于它实际上是 else
的延续,缩进 if
对于捕捉到这个问题会很有帮助。
你期望看到什么?
...
} else
// unfinished statement above
if b == 2 {
fmt.Println("b is 2")
}
...
你看到了什么?
...
} else
// unfinished statement above
if b == 2 {
fmt.Println("b is 2")
}
...
这只是一项建议性的改进——不紧急,当然仍然是我没有完成我开始的一行的问题——但是如果 gofmt
能够解决这个问题并通过缩进来提示我,那将会很有帮助。 :)
编辑:看起来类似于 #20562 ——那里至少有一个评论提到了同样的问题,看起来像是。如果你认为这是一个重复的问题,请随意关闭。我不能完全确定这是否是一个单独的格式化问题......
1条答案
按热度按时间bvjveswy1#
这个注解是触发这种行为所必需的。如果在'else'和if之间没有注解,gofmt将按照要求执行。