Я хотел бы знать, возможно ли изменить тип переменной во время выполнения, например:
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
является ложным (потому что пустые строки ложные).Но тип MyField может быть любым, поэтому я хотел бы знать, как привести его к типу MyField.Я знаю, что могу получить тип поля, используя field.Kind()
, и это:
field.Set(fakeVariable.(field.Kind())
Не будет работать.
fakeVariable
всегда будет строкой, но это можетудерживайте значение «10.0», и если тип MyField float
, он должен привести к плавающему типу, но если это строка, ему следует только назначить его.Имеет смысл?
Есть идеи, если то, что я пытаюсь, возможно?