x/tools/cmd/goimports:为包含连字符/破折号的包路径添加冗余别名

rjzwgtxy  于 6个月前  发布在  Go
关注(0)|答案(7)|浏览(60)

你使用的Go版本是什么(go version)?

$ go version
go version go1.14.14 linux/amd64

这个问题在最新版本中是否会重现?

是的(也是用go1.16.5编译的)

$ git log -n 1
commit 1225b6f53f675b0732bdf025af585b173de322ec (HEAD -> master, origin/master, origin/HEAD)

你正在使用什么操作系统和处理器架构(go env)?

go env 输出

$ go env
GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/home/peregrine/.cache/go-build"
GOENV="/home/peregrine/.config/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOINSECURE=""
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/home/peregrine/go:/home/peregrine/core3:/home/peregrine/core3/src/plz-out/go:/home/peregrine/core3/src/plz-out/gen/third_party/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/opt/tm/tools/go/1.14.14/usr/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/opt/tm/tools/go/1.14.14/usr/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
AR="ar"
CC="cc"
CXX="g++"
CGO_ENABLED="1"
GOMOD="/home/peregrine/go/src/golang.org/x/tools/go.mod"
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 -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build730235714=/tmp/go-build -gno-record-gcc-switches"

你做了什么?

https://play.golang.org/p/8VOphLYHxto

你期望看到什么?

无冗余别名

你看到了什么?

添加了冗余别名

68bkxrlz

68bkxrlz2#

goimports有一个hardcoded rule前缀用于go-;我想它可以扩展到覆盖golang-。除此之外,这正如预期的那样工作。

b09cbbtk

b09cbbtk3#

谢谢。这些规则会被记录下来吗(这样,例如,给名字起名的人可以记住它们)?如果已经被记录了,我道歉,尽管我还没有找到这样的参考。

v8wbuo2f

v8wbuo2f4#

它没有在任何地方记录,我想如果有一个合理的地方放置它,也不会有什么坏处。不过我一时想不起来。你有没有特别希望找到描述的地方?

u5rb5r59

u5rb5r596#

哇!至少我找到了答案,为什么我会得到

import (
	"log"

	dotenv "github.com/dsh2dsh/expx-dotenv"
)

而不是

import (
	"log"

	"github.com/dsh2dsh/expx-dotenv"
)

它确实应该在某个地方记录下来。嗯...现在我有一个问题。为什么它会添加多余的别名?我以为Go导入了 github.com/dsh2dsh/expx-dotenv 并默认将其作为 dotenv 访问吗?是的,我刚刚尝试过,并可以确认不使用别名也可以正常工作。有人能解释一下原因或者提供一个解释链接吗?谢谢。

相关问题