Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cmd/go: thinks a reassigned variable is of the previous type #41724

Closed
ghost opened this issue Oct 1, 2020 · 1 comment
Closed

cmd/go: thinks a reassigned variable is of the previous type #41724

ghost opened this issue Oct 1, 2020 · 1 comment

Comments

@ghost
Copy link

ghost commented Oct 1, 2020

What version of Go are you using (go version)?

$ go version
go version go1.15.2 linux/amd64

Does this issue reproduce with the latest release?

Yes.

What operating system and processor architecture are you using (go env)?

go env Output
$ go env
GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/home/xxx/.cache/go-build"
GOENV="/home/xxx/.config/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOINSECURE=""
GOMODCACHE="/home/xxx/gocode/pkg/mod"
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/home/xxx/gocode"
GOPRIVATE=""
GOPROXY="direct"
GOROOT="/home/xxx/go"
GOSUMDB="off"
GOTMPDIR=""
GOTOOLDIR="/home/xxx/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
AR="ar"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD="/home/xxx/gocode/src/gitlab.com/opennota/mt/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-build629998084=/tmp/go-build -gno-record-gcc-switches"

What did you do?

https://play.golang.org/p/tWmhlKw98EN

What did you expect to see?

No compile-time error. At line 7 x (which has been reassigned) has the type map[interface{}]interface{}. If I change the name of the first variable to y, the program compiles:

https://play.golang.org/p/5gBNPVXN5os

What did you see instead?

A compiler error: invalid operation: x[0] (type interface {} does not support indexing)

@ghost ghost changed the title cmd/go: thinks reassigned variable is of the previous type cmd/go: thinks a reassigned variable is of the previous type Oct 1, 2020
@ianlancetaylor
Copy link
Contributor

That is how the language works. See the "redeclare" discussion at https://golang.org/ref/spec#Short_variable_declarations.

@golang golang locked and limited conversation to collaborators Oct 1, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

2 participants