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]

}

 

 

posted on 2022-09-26 17:58  del88  阅读(101)  评论(0编辑  收藏  举报