栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

通过名称访问结构属性

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

通过名称访问结构属性

大多数代码都不需要这种动态查找。与直接访问相比,它效率低下(编译器知道Vertex结构中X字段的偏移量,可以将vX编译为单个机器指令,而动态查找则需要某种哈希表实现或类似方法)。它还禁止静态类型输入:编译器无法检查您是否没有尝试动态访问未知字段,并且它不知道结果类型应该是什么。

但是…语言为您很少需要的时候提供了一个反射模块。

package mainimport "fmt"import "reflect"type Vertex struct {    X int    Y int}func main() {    v := Vertex{1, 2}    fmt.Println(getField(&v, "X"))}func getField(v *Vertex, field string) int {    r := reflect.ValueOf(v)    f := reflect.Indirect(r).FieldByName(field)    return int(f.Int())}

这里没有错误检查,因此如果您请求不存在的字段或者该字段的类型不是int,您将感到恐慌。检查文档以了解更多详细信息。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/372248.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号