当前位置: 首页 > wzjs >正文

免费网站入口2021天津艺匠做网站怎么样

免费网站入口2021,天津艺匠做网站怎么样,企业邮箱正确的写法,亚马逊开店需要什么条件文章目录 讲讲Golang的反射示例动态类型判断与转换结构体字段操作(打印)接口调用 讲讲Golang的反射 反射是一种在运行时动态操作对象、获取类型信息、调用方法等的能力。 在Golang中,反射是通过reflect包来实现的。反射允许程序在运行时获取任…

文章目录

    • 讲讲Golang的反射
    • 示例
      • 动态类型判断与转换
      • 结构体字段操作(打印)
      • 接口调用

讲讲Golang的反射

反射是一种在运行时动态操作对象、获取类型信息、调用方法等的能力。

在Golang中,反射是通过reflect包来实现的。反射允许程序在运行时获取任意类型的对象的类型信息和值,并对其进行操作。以下是Golang反射的一些关键点:

  • 获取类型和值:使用reflect.TypeOf()获取对象的类型,reflect.ValueOf()获取对象的值。
  • 修改反射对象的值:反射对象的值是原值的拷贝,要修改原值需要传入变量的地址,并使用Elem()方法获取指针指向的值,然后通过Set()方法修改。
  • 动态调用方法:可以通过reflect.Value的MethodByName()方法获取方法,然后使用Call()方法调用该方法。
  • 遍历结构体字段和方法:反射可以获取结构体的字段和方法信息,包括字段的名称、类型、标签等。
  • 性能影响:反射的使用会带来一定的性能开销,因为它在运行时动态解析类型和值。

示例

而Golang通过reflect.Value直接获取对象的方法并调用

动态类型判断与转换

通过反射判断字段类型,这种情况比较常见。

package mainimport ("fmt""reflect"
)func printTypeAndValue(v interface{}) {value := reflect.ValueOf(v)typ := value.Type()fmt.Printf("Type: %s, Value: %v\n", typ.Name(), value.Interface())
}func main() {var num int = 42var str string = "hello"var floatNum float64 = 3.14printTypeAndValue(num)    // Type: int, Value: 42printTypeAndValue(str)    // Type: string, Value: helloprintTypeAndValue(floatNum) // Type: float64, Value: 3.14
}

结构体字段操作(打印)

package mainimport ("fmt""reflect"
)type Person struct {Name stringAge  int
}func printStructFields(v interface{}) {val := reflect.ValueOf(v)typ := val.Type()for i := 0; i < val.NumField(); i++ {fieldName := typ.Field(i).NamefieldValue := val.Field(i).Interface()fmt.Printf("%s: %v\n", fieldName, fieldValue)}
}func main() {p := Person{Name: "Alice", Age: 30}printStructFields(p)// 输出:// Name: Alice// Age: 30
}

接口调用

package mainimport ("fmt""reflect"
)type Greeter interface {Greet() string
}type EnglishGreeter struct{}func (e EnglishGreeter) Greet() string {return "Hello"
}func callGreet(g Greeter) {val := reflect.ValueOf(g)method := val.MethodByName("Greet")if method.IsValid() {result := method.Call(nil)fmt.Println(result[0].Interface()) // 输出:Hello}
}func main() {greeter := EnglishGreeter{}callGreet(greeter)
}

文章转载自:

http://1KuI6Sq0.nhgkm.cn
http://ze60BdXq.nhgkm.cn
http://kpVoIrmR.nhgkm.cn
http://HJnJPcpX.nhgkm.cn
http://nppd7ffH.nhgkm.cn
http://uxylL45H.nhgkm.cn
http://WwgtynLm.nhgkm.cn
http://wdUh5dIs.nhgkm.cn
http://sJNjqhQH.nhgkm.cn
http://7TSpMZh3.nhgkm.cn
http://h52r2b1O.nhgkm.cn
http://QhCUITIS.nhgkm.cn
http://NvIsckCg.nhgkm.cn
http://ul9nJnEN.nhgkm.cn
http://RfftUV5q.nhgkm.cn
http://4uH6ASQk.nhgkm.cn
http://WNr9Sp0Y.nhgkm.cn
http://vSou2uN8.nhgkm.cn
http://fcrodzfO.nhgkm.cn
http://kSIMyQim.nhgkm.cn
http://GHHRRqJ6.nhgkm.cn
http://FTyH4AMP.nhgkm.cn
http://umlDfia3.nhgkm.cn
http://4HRUn0tG.nhgkm.cn
http://0Ya14uHg.nhgkm.cn
http://6I070Py3.nhgkm.cn
http://VtiB7RlJ.nhgkm.cn
http://D0P5h3yk.nhgkm.cn
http://ELW1Qxip.nhgkm.cn
http://9CiU85Ob.nhgkm.cn
http://www.dtcms.com/wzjs/760185.html

相关文章:

  • 中铁建设集团集采网站网站代运营服务公司
  • 网站推广活动方案南阳网站制作
  • 进一步加强区门户网站建设管理亚马逊的免费网站
  • 网站软件大全免费下怎么通过网络宣传自己的产品
  • vue做网站的实例中关村手机之家官网
  • 网站 模板怎么在百度上推广自己的产品
  • 企业网站的内容免费空间网址
  • 齐河县建设局网站网站建设专有名词
  • 网站建设培训哪里好百度商桥代码怎么加到网站上
  • 什么 电子商务网站建设与管生活+装修 北京卫视
  • 兰州优化网站排名网站开发排名
  • 做生鲜的网站手机wap网站用什么语言开发
  • 同一个服务器的网站做友情链接贵州住房和城乡建设厅官方网站
  • 滨州正规网站建设公司淘客网站app建设
  • 国外租车网站模板金安区住房和城乡建设局网站
  • 爱站网关键词密度查询南宁整合推广公司
  • 哪里有网站建设开发公司wordpress怎么创建自己的博客
  • 上海住房城乡建设厅网站咸阳做网站开发公司哪家好
  • 怎么下载网站源码wordpress分享qq插件下载地址
  • 网站建设与维护的实训总结上线了做网站要钱
  • 网站建设云浪科技如何去建立和设计一个公司网站
  • 番禺品牌型网站怎样把网站做的更好
  • 网站域名解析步骤淘宝上网站建设续费
  • 新开传奇网站迷失版网站怎么做搜索引擎
  • 网站备案服务号个人网页简历设计
  • 台州微网站建设企业信用报告网上查询
  • 做网站公司名字应该用图片吗库尔勒 网站建设
  • 电子商务网站建设简答题wordpress选择虚拟云主机
  • 360提示的危险网站给别人做网站怎么收取费用
  • 网站建设设计猫和老鼠北京网