如果需要,我的程序包需要能够让我的用户显式定义字段后端数据库列名称。
默认情况下,我将使用字段名称-但有时它们将需要手动指定列名称,就像JSON包一样-如果需要,unmarshal使用显式名称。
如何在html" target="_blank">代码中使用此显式值?我什至不知道这叫什么,所以Google目前真的让我失望。
例如,这是JSON的解组功能所需要的:
type User struct {
Name string
LastName string `json:"last_name"`
CategoryId int `json:"category_id"`
}
我需要使用这样的东西吗?
// Paprika is my package name.
type User struct {
Name string
LastName string `paprika:"last_name"`
CategoryId int `paprika:"category_id"`
}
我的程序包将用于构造SQL查询,而我不能仅仅依靠字段的名称-我需要能够让他们手动设置列名称。因此,此刻仅处理定义的列。
// Extracts resource information using reflection and
// saves field names and types.
func loadTypeToSchema(resource interface{}) {
resourceType := reflect.TypeOf(resource)
// Grab the resource struct Name.
fullName := resourceType.String()
name := fullName[strings.Index(fullName, ".")+1:]
// Grabs the resource struct fields and types.
fieldCount := resourceType.NumField()
fields := make(map[string]string)
for i := 0; i <= fieldCount-1; i++ {
field := resourceType.Field(i)
fields[field.Name] = field.Type.Name()
}
// Add resource information to schema map.
schema[name] = fields
}
首先,您所谓的装饰器实际上称为标记。您可以使用反射读取这些标签。该reflect
软件包甚至有自己的示例。
不过,这是另一个示例,该示例打印结构成员的所有标签(单击播放):
type Foo struct {
A int `tag for A`
B int `tag for B`
C int
}
func main() {
f := Foo{}
t := reflect.TypeOf(f)
for i := 0; i < t.NumField(); i++ {
fmt.Println(t.Field(i).Tag)
}
}
请注意,如果f
是一个指针,例如a
*Foo
,则必须首先间接(取消引用)该值,否则返回的类型TypeOf
不是结构而是指针,NumField
并且Field()
也不起作用。
问题内容: 创建像这样的结构后: 如何创建Foo的新实例并设置并获取名称?我尝试了以下方法: 没有打印任何内容,因为名称为空。那么如何设置结构中的字段? 工作操场 问题答案: 评论(和工作)示例: 测试并进行Go之旅,以了解有关方法和指针以及Go的基础知识的更多信息。
TypeScript 1.5现在有了装饰器。 有人能提供一个简单的例子来演示实现装饰器的正确方法,并描述可能有效的装饰器签名中的参数意味着什么吗? 此外,在实现decorator时,是否应该记住任何最佳实践注意事项?
问题内容: 考虑这个小例子: 哪个打印 为什么参数(应该是Test obj实例)没有作为第一个参数传递给装饰函数? 如果我手动进行操作,例如: 它按预期工作。但是,如果我必须事先知道某个函数是否装饰,它就破坏了装饰器的全部目的。这里的模式是什么,还是我误会了什么? 问题答案: tl; dr 您可以通过将类作为描述符并返回部分应用的函数来解决此问题,该函数从中应用对象作为参数之一,如下所示 实际问题
我是JavaFX技术的新手,目前我正在开发JavaFX应用程序,其中有一个未装饰的阶段,我可以使用下面的代码在屏幕上移动它,但我无法从右下角调整此窗口的大小,有人能给我建议解决方案吗。
我有一扇没有装饰的窗户: 我想知道我怎样才能把它做成一扇可拖动的未装饰窗户?我想在用户用鼠标右键选择窗口时更改其位置,然后在按住鼠标键的同时移动鼠标。 附言:我测试了这个解决方案,但它不起作用:
问题内容: 我有一个Struct : 然后我初始化一个以上述结构作为值和键作为键(任务名称)的映射 我想只使用上述解析html页面。 这是: 我可以成功获取并打印,但是在使用领域,它是行不通的。 在这种情况下,如何获得每个的? 问题答案: 注意:您可以在 Go Playground中 尝试/签出您工作的修改后的代码。 如果希望软件包能够访问字段,则必须导出字段。您可以通过以大写字母开头的字段来导出