我想知道是否可以在运行时更改变量的类型,例如:
package main
import "github.com/fatih/structs"
type T struct {
MyField bool
}
func main() {
fakeVariable := ""
s := structs.New(T{})
for _, field := range s.Fields() {
field.Set(fakeVariable)
}
}
由于MyField是布尔值,因此我想将fakeVariable更改为布尔值,并且预期结果将是MyField
为false(因为空字符串为false)。但是MyField类型可以是任何东西,因此我想知道如何将其强制转换为MyField类型。我知道我可以使用field.Kind()
来获取字段类型,
field.Set(fakeVariable.(field.Kind())
不起作用。
fakeVariable
始终是一个字符串,但可以保留值“ 10.0”,如果MyField的类型为float
,则应强制转换为float,但是如果为字符串,则应为float应该只分配它。有道理吗?
有什么想法可以尝试吗?
答案 0 :(得分:4)
如何在运行时更改变量类型
你不能。