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

以网站域名做邮箱教做衣服的网站有哪些

以网站域名做邮箱,教做衣服的网站有哪些,网页设计案例收集,模具外发加工订单网在Go语言中反射不仅可以获取值的类型和种类,还可以获取值和更改值,使用reflect.ValueOf()获取和设置变量的值。 使用反射值包装任意值 Go语言通过reflect.ValueOf()获取的是值的反射值对象,书写格式如下 value : reflect.ValueOf(rawValue…

在Go语言中反射不仅可以获取值的类型和种类,还可以获取值和更改值,使用reflect.ValueOf()获取和设置变量的值。

使用反射值包装任意值

Go语言通过reflect.ValueOf()获取的是值的反射值对象,书写格式如下

value := reflect.ValueOf(rawValue)

reflect.ValueOf()返回的是reflect.Value()类型。reflect.Value()与原值间可以通过值包装和值获取相互转化。

从反射值对象获取被包装的值
从反射值对象(reflect.Value)中获取原值有几种方法如下:
方法名 说 明
Interface() interface{} 将值以interface{}类型返回,可以通过类型断言转换为指定类型
Int() int64 将值以int类型返回,所有有符号整数均可以以此方法返回
Uint() uint64 将值以uint类型返回,所有无符号整数均可以以此方法返回
Float() float64 将值以双精度类型返回,所有浮点数均可以以此方法返回
Bool() bool 将值以bool类型返回
Bytes() []bytes 将值以字节数组类型返回
String() string 将值以字符串类型返回

从反射值对象获取值的代码示例

package main
import ("fmt""reflect"
)
func main() {//声明一个整型变量a并赋值var a int = 1024//获取a的反射值对象valueOf := reflect.ValueOf(a)//获取interface的类型值,通过类型断言进行转换var getA int := valueOf.interface().(int)//通过强制类型转换为int类型var getB := int(valueOf.Int())//输出两种值fmt.Println(getA,getB)

使用反射访问结构体的成员字段值
反射值对象提供对结构体访问的方法,这些方法可以完成对结构体任意值的访问。

方 法 备注
Field(i int) Value 根据索引,返回索引对应的结构体成员字段的反射值对象。当值不是结构体或者索引超界时发生宕机
NumField() int 返回结构体成员字段数量。当值不是结构体或者索引超届时发生宕机
FieldByName(name string) Value 根据给定字符串返回字符串对应的结构体字段。没有找到时返回零值当值不是结构体或索引超界时宕机
FieldByNameFunc(match func(string) bool)
Value 根据匹配函数匹配需要的字段。找到时返回零值,当值不是结构体或索引超界时宕机

通过反射访问结构体成员值代码示例

package main
import ("fmt""reflect"
)
func main() {//定义结构体type wy struct {a intb string//嵌入字段float32boolnext *wy}//获取结构体反射值对象d := reflect.ValueOf(wy{next: &wy{}})//获取字段数量fmt.Println("NumField:",d.NumField())//获取索引为2的字段floatField := d.Field(2)fmt.Println("Field:",floatField.Type())//根据名字查找字段fmt.Println("FieldByName(\"b\").Type",d.FieldByName("b").Type())//根据索引值找字段中next的int字段值fmt.Println("FieldByIndex([]int{4,0}).Type()", d.FieldByIndex([]int{4,0}).Type())

反射值对象中使用isNil() bool 内置函数判断是否为空,用isValid()函数判断值是否有效。

使用反射值对象修改变量的值
反射值对象判定及获取元素的方法

方法 备注
Elem() Value 取值指向的元素值,类似于语言层 “*”操作。当值类型不是指针或者接口时发生宕机,空指针时返回nil的Value
Addr() Value 对可寻址的值返回其地址,类似于语言层“&”操作。当值不可寻址时发生宕机
CanAddr() bool 表示值是否可寻址
CanSet() bool 返回值能否被修改。要求值可寻址且是导出的字段

使用反射更改值时,首先要确定被更改的值被寻址。

使用反射更改值的代码示例

package main
import("fmt""reflect"
)
func main() {//声明一个整型变量a并赋值var a int = 2//获取a的反射值对象valueOfA := reflect.ValueOf(&a)//取出a元素的地址valueOfA = ValueOfA.Elem()//修改a的值为1valueOfA.SetInt(1)//打印输出fmt.Println(valueOfA.Int())

当reflect.Value不可寻址时,使用Addr()方法也是不可寻址的,同时发生宕机。

在结构体中成员值如果想用反射更改值需要先导出。
代码示例如下:

package main
import("fmt""reflect"
)
func main() {type dog struct {LegCount int}//获取dog实例地址的反射值对象valueOfDog := reflect.ValueOf(&dog{})//获取dog实例地址元素valueOfDog = valueOfDog.Elem()//获取LegCount字段(结构体成员导出就是将成员名首字母大写)vLegCount := valueOfDog.FieldByName("LegCount")//尝试设置LegCount的值vLegCount.SetInt(4)//d打印输出fmt.Println(vLegCount.Int())
http://www.yayakq.cn/news/216297/

相关文章:

  • 南昌企业建设网站设计给人做网站挣钱吗
  • 中国风网站表现app开发公司部门
  • 广州高档网站建设车陂手机网站建设电话
  • 建设干部学校网站首页景德镇陶瓷学院校友做网站的
  • 关于网站建设方案嘉兴设计公司有哪些
  • 合肥新格建站网做网站的叫什么思耐
  • 电子商务企业网站设计wordpress 批量替换
  • 网站后台页面进不去深圳设计优化公司
  • 网站建设的文件做网站需要用c语言吗
  • 网站首页界面设计石家庄网站建设报价
  • 西安高端网站建设首选建设企业网站有什么好处
  • 网站推广描述大连市场所码二维码图片
  • 南苑网站建设网页图片怎么下载
  • 南昌企业建站程序asp.net 网站开发视频
  • 开个捕鱼网站怎么做现在网站建设都用什么语言
  • 宁波网站关键词推广北京网站建设公司网站优化
  • 做汉字的教育网站做的网站百度找不到了
  • 做胃肠医院网站手机网站开放配
  • 北京网站开发价格国家工商企业查询系统
  • 新网如何管理网站it服务公司
  • 做网站分为竞价和优化制造企业危机公关解决方案
  • 上海专上海专业网站制作公司dw网页制作教案
  • 建设网站商城后台系统广东专业网站优化制作公司
  • 医院做网站是最简单的前端吗学院网站建设管理办法
  • 网站建设十年经验娄底工程建设有限公司网站
  • 网站模式下做淘宝客钓鱼网站实施过程
  • 做的好的公司网站福州正规网站建设公司推荐
  • 营销网站建设公司哪家好网页升级紧急通知新域名
  • 汽车销售公司的网站怎么做简单的wordpress模板
  • 怎样收录网站网络推广经验