当前位置: 首页 > 知识库问答 >
问题:

使用函数名前带下划线的结构化标记

高钱青
2023-03-14

我正在研究go,特别是QT绑定。但是,我不理解在下面的结构中使用前导下划线。我知道在一般情况下使用下划线,但不知道这个具体的例子。

type CustomLabel struct {
    core.QObject

    _ func() `constructor:"init"`
    _ string `property:"text"`
}

它与结构标记有关吗?

共有1个答案

夹谷苗宣
2023-03-14

这些被称为空白字段,因为空白标识符被用作字段名。

它们不能被引用(就像任何以空标识符作为名称的变量一样),但它们参与了结构的内存布局。通常和实际上,它们被用作填充,以将后续字段与来自(或去往)另一个系统的数据的布局匹配的字节位置(或内存位置)对齐。这样做的好处是,这些结构值(或者更确切地说,它们的内存空间)可以在一个步骤中简单有效地转储或读取。

@mkopriva的回答详细说明了问题中的具体用例是为了什么。

type CustomLabel struct {
    _ [0]func() `constructor:"init"`
    _ [0]string `property:"text"`
}
type CustomLabel struct {
    _ [0]func() `constructor:"init"`
    _ [0]string `property:"text"`
}

func main() {
    f := reflect.ValueOf(CustomLabel{}).Type().Field(0)
    fmt.Println(f.Tag)
    fmt.Println(f.Type)
    fmt.Println(f.Type.Elem())
}
constructor:"init"
[0]func()
func()
 类似资料:
  • 问题内容: 我正在使用go,特别是QT绑定。但是,我不理解以下结构中前导下划线的使用。我知道一般使用下划线,但不知道此特定示例。 它与struct标签有关吗? 问题答案: 这些称为空白字段,因为空白标识符用作字段名称。 不能引用它们(就像任何以空白标识符作为名称的变量一样),但它们会参与结构的内存布局。通常,实际上,它们被用作填充,以将后续字段与字节位置(或内存位置)对齐,以匹配来自(或进入)另一

  • 问题内容: 我正在尝试使JLabel带有下划线。我到处搜寻,但一无所获。即使在属性中,也没有为JLabel下划线的选项。我能做什么? 问题答案: 要么

  • 问题内容: 这种“强调”似乎经常发生,我想知道这是否是Python语言中的要求,还是仅仅是一个约定问题? 另外,有人可以说出并解释哪些函数倾向于带有下划线,以及为什么(例如)? 问题答案: 从Python PEP 8-Python代码样式指南: [描述性:命名样式](https://www.python.org/dev/peps/pep-0008/#descriptive-naming- styl

  • rank ▲ ✰ vote url 64 365 174 322 url 在实例名字前单下划线和双下划线的含义 我想刨根问底,这到底是什么意思?解释一下他俩的区别. 单下划线 在一个类中的方法或属性用单下划线开头就是告诉别的程序这个属性或方法是私有的.然而对于这个名字来说并没有什么特别的. 引自PEP-8: 单下划线:"内部使用"的弱指示器.比如,from M import * 将不会引进用但下划

  • 本文向大家介绍写个js函数,可以转化下划线命名到驼峰命名?相关面试题,主要包含被问及写个js函数,可以转化下划线命名到驼峰命名?时的应答技巧和注意事项,需要的朋友参考一下 参考回答:  

  • 问题内容: 我已经看到了使用这种模式的两段Go代码: 谁能解释这段代码的作用? 问题答案: 声明结构时,此技术将强制使用键控字段。 例如,该结构: 只能用键控字段声明: 这样做的原因之一是允许将来在不破坏现有代码的情况下将其他字段添加到结构中。