func main() { //定义一个切片 a := []byte{1, 2, 3} fmt.Printf("a的类型%T\n", a) //a的类型[]uint8 fmt.Printf("a原来的值%v\n", a) //a原来的值[1 2 3] //这样[0]没有冒号的情况下,是取切片中的某一个元素的值,就是把切片中某个元素的值复制一份赋值给b b := a[0] b >>= 1 //修改b的值,并不会影响切片a底层对应的数组元素的值 fmt.Printf("b的类型%T\n", b) //b的类型uint8 fmt.Printf("a现在的值%v\n", a) //a现在的值[1 2 3] //利用切片a再次生成一个切片,这个切片里只有一个元素,切片是一个指针不能进行移位操作 c := a[:1] c[0] >>= 1 //在这里对c切片的第一个元素(就是一个byte)进行移位操作,会影响到a fmt.Printf("c的类型%T\n", c) //c的类型[]uint8 fmt.Printf("c的值%v\n", c) //c的值[0] fmt.Printf("a后来的值:%v\n", a) //a后来的值:[0 2 3] }
标签:golang,fmt,元素,uint8,切片,Printf,类型 From: https://www.cnblogs.com/del88/p/16731852.html