我想在 Golang 中为 hashmap 的值设置多种类型。我实现了 golang 泛型any,并编写了返回的函数map[string]any。
但是,在我运行代码后,它返回了
$ cannot use r.Method (variable of type string) as type T in map literal
在 Go 中为 hashmap 值设置多种类型的正确方法是什么?
这是我的代码
package main
type RequestProperty struct {
Method string
Params []any
Id int
}
func SetRequestProperty[T any](payloadCombine bool) map[string]T {
var p map[string]T
var r = RequestProperty{
Method: "SET_PROPERTY",
Params: []any{"combined", payloadCombine},
Id: 5,
}
// just for test
p = map[string]T{
"method": r.Method, // << Error Here
}
return p
}
func main() {
p := SetRequestProperty(true)
}
[编辑] 这似乎有效......我不知道为什么。
package main
type RequestProperty struct {
Method string
Params []any
Id int
}
// delete [T any], map[string]T
// change it to map[string]any
func SetRequestProperty(payloadCombine bool) map[string]any {
var p map[string]any
var r = RequestProperty{
Method: "SET_PROPERTY",
Params: []any{"combined", payloadCombine},
Id: 5,
}
// just for test
p = map[string]any{
"method": r.Method,
}
return p
}
func main() {
p := SetRequestProperty(true)
}
不应该T只是像别名一样输入任何内容吗?我误会了什么吗?