你正在使用的Go版本是什么( go version
)?
$ go version
go version go1.18beta1 darwin/amd64
这个问题在最新版本的发布中是否会重现?
是的
你正在使用什么操作系统和处理器架构( go env
)?
go env
输出
$ go env
GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/olenasynenka/Library/Caches/go-build"
GOENV="/Users/olenasynenka/Library/Application Support/go/env"
GOEXE=""
GOEXPERIMENT=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOINSECURE=""
GOMODCACHE="/Users/olenasynenka/go/pkg/mod"
GONOPROXY=""
GONOSUMDB=""
GOOS="darwin"
GOPATH="/Users/olenasynenka/go"
GOPRIVATE=""
GOPROXY=" [https://proxy.golang.org,direct](https://proxy.golang.org,direct) "
GOROOT="/Users/olenasynenka/sdk/go1.18beta1"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/Users/olenasynenka/sdk/go1.18beta1/pkg/tool/darwin_amd64"
GOVCS=""
GOVERSION="go1.18beta1"
GCCGO="gccgo"
GOAMD64="v1"
AR="ar"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD="/Users/olenasynenka/go/src/generics/go.mod"
GOWORK=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/f8/xmg0swjx04jfwc7zln05fxlh0000gn/T/go-build495723722=/tmp/go-build -gno-record-gcc-switches -fno-common"
你做了什么?
我创建了一个带有类型参数“T”的通用函数F,并有一个单独的结构体叫做“T”。然后我运行cmd/godoc来查看它的文档。
重现问题的步骤:
mkdir /tmp/test
cd /tmp/test
go mod init test
echo 'package test; func F[T any](t T) {}; type T struct{}' > test.go
go install golang.org/x/tools/cmd/godoc@latest
godoc
# In browser navigate to localhost:6060/pkg/test
你期望看到什么?
应该能看到带有类型参数“T”的通用函数F的文档。类型“T”没有链接到任何地方。
你实际上看到了什么?
类型参数“T”被渲染成一个超链接,指向错误的类型(结构体"T")。这不应该发生,因为结构体“T”和类型参数“T”是不同的实体。
1条答案
按热度按时间oxiaedzo1#
https://golang.org/cl/382714提到了这个问题:
godoc: handle type parameters correctly in LinkifyText