复制代码代码如下:
func test12() {
slice := []int32{1, 2, 3, 4, 5, 6}
slice2 := slice[:2]
_ = append(slice2, 50, 60, 70, 80, 90)
fmt.Printf("slice为:%v\n", slice)
fmt.Printf("操作的切片:%v\n", slice2)
_ = append(slice2, 50, 60)
fmt.Printf("slice为:%v\n", slice)
fmt.Printf("操作的切片:%v\n", slice2)
}
如上 , append方法用了2次,结果返回的结果完全不同,原因是第二次append方法追加的元素数量没有超过 slice 的容量 。而无论怎样,原切片slice2都无影响 。结果:
slice为:[1 2 3 4 5 6]
操作的切片:[1 2]
slice为:[1 2 50 60 5 6]
操作的切片:[1 2]
Go语言输出打印--排坑一.几种公共方法
1)Print:输出到控制台(不接受任何格式化go语言%v,它等价于对每一个操作数都应用 %v)
print 在golang中 是属于输出到标准错误流中并打印,官方不建议写程序时候用它 。可以再debug时候用
2)Println: 输出到控制台并换行
3)Printf : 只可以打印出格式化go语言%v的字符串 。只可以直接输出字符串类型的变量(不可以输出整形变量和整形等)
4)Sprintfgo语言%v:格式化并返回一个字符串而不带任何输出
5)Fprintfgo语言%v:来格式化并输出到 io.Writers 而不是 os.Stdout
二.带占位符输出--网址:
和python差不多的道理,这里简单补充
v值的默认格式
%+v添加字段名(如结构体)
%#v相应值的Go语法表示
%T相应值的类型的Go语法表示
%%字面上的百分号,并非值的占位符
%c相应Unicode码点所表示的字符
%x十六进制表示 , 字母形式为小写 a-f
%X十六进制表示,字母形式为大写 A-F
%UUnicode格式:U+1234,等同于 "U+%04X"
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{}
//通过反射设置变量的值
func reflectSetValue1(x interface{}){
v := reflect.ValueOf(x)
if v.Kind() == reflect.Int64{
v.SetInt(200) //修改的是副本, 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)
}
go语言%v的介绍就聊到这里吧,感谢你花时间阅读本站内容 , 更多关于go语言%c、go语言%v的信息别忘了在本站进行查找喔 。
推荐阅读
- 手机版特别火的射击游戏,手机版射击游戏排行榜
- flutterdialog关闭,flutter 关闭dialog
- 温州企业代理会计平台电话,温州会计代理记账收费标准
- 声卡调试专业直播平台,直播声卡调试教程视频教程
- php向数据库增加信息 php向数据库增加信息的方法
- 釜盛海鲜公众号关注的简单介绍
- 父子游戏飞行员,父子游戏飞行员攻略
- 黑暗即时战略游戏攻略中文,黑暗时刻百科
- python内积函数 python内置函数求和