如何在运行时更改变量类型

时间:2018-12-24 13:46:24

标签: go struct types

我想知道是否可以在运行时更改变量的类型,例如:

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应该只分配它。有道理吗?

有什么想法可以尝试吗?

1 个答案:

答案 0 :(得分:4)

  

如何在运行时更改变量类型

你不能。