go语言中的反射import (
"fmt"
"reflect"
)
func reflecType(x interface{}){
v := reflect.TypeOf(x)
fmt.Println("type:%v\n", v)
fmt.Println("type name:%v , rtpe kind:%v \n", v.getName(), v.getType())
}
type Cat struct{}
//通过反射设置变量%vgo语言的值
func reflectSetValue1(x interface{}){
v := reflect.ValueOf(x)
if v.Kind() == reflect.Int64{
v.SetInt(200) //修改%vgo语言的是副本, reflect 包会引发panic
}
}
//通过反射设置变量的值
func reflectSetValue2(x interface{}){
v := reflect.ValueOf(x)
//反射中使用Elem()获取指针对应的值
if v.Elem().Kind() == reflect.Int64{
v.Elem().SetInt(200)
}
}
func main(){
var a float32 = 3.14
reflectType(a) //type name:float32 type kind:float32
var b int64 = 100
reflectType(b) // type name :int64 type kind :int64
var c = Cat{}
reflectType(c) // type name :Cat type kind :struct
reflectSetValue1(b)
fmt.Println(b) //依然为100
reflectSetValue2(b)
}
golang中%v\n是什么golang中%v\n是字符串 。根据相关公开资料查询:fmt.Printf会根据后面参数格式化前面的字符串,fmt.Println不会 。
Go语言的%d,%p,%v等占位符的使用这些是死知识 , 把常用的记住 , 不常用的直接查表就行了
golang 的fmt 包实现了格式化I/O函数,类似于C的 printf 和 scanf 。
type Human struct {
Name string
}
var people = Human{Name:"zhangsan"}
golang没有 '%u' 点位符,若整数为无符号类型,默认就会被打印成无符号的 。
宽度与精度的控制格式以Unicode码点为单位 。宽度为该数值占用区域的最小宽度;精度为小数点之后的位数 。
操作数的类型为int时 , 宽度与精度都可用字符 '*' 表示 。
对于 %g/%G 而言,精度为所有数字的总数 , 例如:123.45,%.4g 会打印123.5,(而 %6.2f 会打印123.45) 。
%e 和 %f 的默认精度为6
对大多数的数值类型而言,宽度为输出的最小字符数,如果必要的话会为已格式化的形式填充空格 。
而以字符串类型,精度为输出的最大字符数,如果必要的话会直接截断 。
使用起来很简单 , 一般配合fmt.Printf()使用,因为fmt的Printf()是有格式的输出,切忌使用Println(),否则将会以字符串的形式输出 。
查看原文: golang fmt格式“占位符”
【%vgo语言 vgo语言】关于%vgo语言和vgo语言的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。
推荐阅读
- 直播前景面试素材,直播面试视频
- Python修改成绩函数,python函数修改全局变量
- ios可以用链接下载软件,ios可以用链接下载软件嘛
- 网页pdf内容转word,网站pdf转word
- mysql怎么选引擎 mysql引擎isam
- 关于安卓靓机图的信息
- asp.NET4.0内部提供的服务器控件,aspnet server
- linux删除目录命令,linux删除目录命令没有任何提示
- 如何编译linux命令 linux中怎么编译程序