如何标记无法修改的嵌入式结构的字段?

时间:2016-11-22 09:37:29

标签: go tags

假设有一个外部库NotMyType声明了type NotMyType struct { NotMyField string }

type MyType struct {
  SomeData0 string  `orm:"nullable"`
  SomeData1 string  `orm:"nullable"`
  libA.NotMyType
}

并且您希望将其与您自己的类型嵌入,并将其与ORM一起使用,该ORM使用标记来调整列属性。

MyType.SomeData0

例如,列MyType.SomeData1NotMyField为NULLABLE。

是否可以在不修改orm:"nullable"的情况下使用NotMyType标记{{1}}?

2 个答案:

答案 0 :(得分:1)

编辑:错误答案,我的错误

Okep我想我明白了。我之前从未使用过反射,所以也许我错了。但是:

看看我刚才做的事情:

  

https://play.golang.org/p/U0uyomL-It

我有一个结构

type User struct {
    name string
    age  int
}

没有标签。

我用

获得了这个字段
field, ok := reflect.TypeOf(user).Elem().FieldByName("name")
if !ok {
    panic("Field not found")
}

我用

设置了一个新标签
//setStructTag(&field)

func setStructTag(f *reflect.StructField) {
    f.Tag = "`json:name-field`"
}

希望我的研究人员会帮助你:)

答案 1 :(得分:0)

Go是内省的。 它具有内省(例如,find-class允许查看现有类)但没有代替(例如,ensure-class在运行时创建/修改类)。

所以你不能。