Closed as not planned
Closed as not planned
Description
Go version
go1.22.0 linux/amd64
Output of go env
in your module/workspace:
GO111MODULE='on'
GOARCH='amd64'
GOBIN=''
GOCACHE='/home/ivasylen/.cache/go-build'
GOENV='/home/ivasylen/.config/go/env'
GOEXE=''
GOEXPERIMENT=''
GOFLAGS=''
GOHOSTARCH='amd64'
GOHOSTOS='linux'
GOINSECURE=''
GOMODCACHE='/home/ivasylen/golang/pkg/mod'
GONOPROXY=''
GONOSUMDB=''
GOOS='linux'
GOPATH='/home/ivasylen/guardicore/management/go'
GOPRIVATE=''
GOPROXY='https://proxy.golang.org,direct'
GOROOT='/usr/local/go'
GOSUMDB='sum.golang.org'
GOTMPDIR=''
GOTOOLCHAIN='auto'
GOTOOLDIR='/usr/local/go/pkg/tool/linux_amd64'
GOVCS=''
GOVERSION='go1.22.0'
GCCGO='gccgo'
GOAMD64='v1'
AR='ar'
CC='gcc'
CXX='g++'
CGO_ENABLED='1'
GOMOD='/home/ivasylen/guardicore/management/c2c/go/go.mod'
GOWORK=''
CGO_CFLAGS='-O2 -g'
CGO_CPPFLAGS=''
CGO_CXXFLAGS='-O2 -g'
CGO_FFLAGS='-O2 -g'
CGO_LDFLAGS='-O2 -g'
PKG_CONFIG='pkg-config'
GOGCCFLAGS='-fPIC -m64 -pthread -Wl,--no-gc-sections -fmessage-length=0 -ffile-prefix-map=/tmp/go-build1023271956=/tmp/go-build -gno-record-gcc-switches'
What did you do?
I am working with reflection package, creating dynamic structures with reflect.StructOf
.
Later on I inspect these structure tags and 1st tag is always missing for any field.
I have simple UT
func TestDynamicStructTags(t *testing.T) {
field := reflect.StructField{
Name: "Field",
Type: reflect.TypeOf(""),
Tag: reflect.StructTag("`k1:\"v1\" k2:\"v2\" k3:\"v3\"`"),
}
stType := reflect.StructOf([]reflect.StructField{field})
for i := 0; i < stType.NumField(); i++ {
var (
f = stType.Field(i)
)
tagsFmt := fmt.Sprintf("%s, %s, %s, %s", f.Tag, f.Tag.Get("k1"), f.Tag.Get("k2"), f.Tag.Get("k3"))
//assert.Equal(t, "`k1:\"v1\" k2:\"v2\" k3:\"v3\"`, , v2, v3", tagsFmt)
assert.Equal(t, "`k1:\"v1\" k2:\"v2\" k3:\"v3\"`, v1, v2, v3", tagsFmt)
}
}
What did you see happen?
In above test, k1 is missing
// k1 is missing
// expected: "`k1:\"v1\" k2:\"v2\" k3:\"v3\"`, v1, v2, v3"
// actual : "`k1:\"v1\" k2:\"v2\" k3:\"v3\"`, , v2, v3"
What did you expect to see?
I would expect all tags returned, including k1