zoukankan      html  css  js  c++  java
  • copy ---- 数组,切片

    package main
    
    import (
        "fmt"
    )
    
    func main() {
    
        data := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}                 // 数组 与 切片 结果一致
        // data := [...]int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
        fmt.Println("array data : ", data)          // [0 1 2 3 4 5 6 7 8 9]
        s1 := data[8:]
        s2 := data[:5]
        fmt.Printf("slice s1 : %v
    ", s1)           // [8 9]     
        fmt.Printf("slice s2 : %v
    ", s2)           // [0 1 2 3 4]
    
        // copy(s2, s1)
        // fmt.Printf("copied slice s1 : %v
    ", s1)    // [8 9]
        // fmt.Printf("copied slice s2 : %v
    ", s2)    // [8 9 2 3 4]
        // fmt.Println("last array data : ", data)     // [8 9 2 3 4 5 6 7 8 9]
    
        copy(s1, s2)
        fmt.Printf("copied slice s1 : %v
    ", s1)    // [0 1]
        fmt.Printf("copied slice s2 : %v
    ", s2)    // [8 9 2 3 4]
        fmt.Println("last array data : ", data)     // [8 9 2 3 4 5 6 7 8 9]
    
        fmt.Printf("%p",&data[0])                   // 0xc04207e000
        fmt.Println()
        fmt.Printf("%p",&s2[0])                     // 0xc04207e000
    
    }
    

    数组 与 切片,结果一致

    copy(a,b) ,将b赋值给a,拷贝多少个元素,取决于元素最少的,有几个,拷贝几个

    copy,与值类型或者引用类型无关,都是修改的原数据

    当代码中出现 := 时,返回结果不一致,原因待确定

    package main
    
    import (
        "fmt"
    )
    
    func main() {
    
        data1 := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}                 // 数组 与 切片 结果一致
        // data1 := [...]int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
    
        data := data1
    
        fmt.Println("array data : ", data)          // [0 1 2 3 4 5 6 7 8 9]
        s1 := data[8:]
        s2 := data[:5]
        fmt.Printf("slice s1 : %v
    ", s1)           // [8 9]     
        fmt.Printf("slice s2 : %v
    ", s2)           // [0 1 2 3 4]
    
        copy(s2, s1)
        fmt.Printf("copied slice s1 : %v
    ", s1)    // [8 9]
        fmt.Printf("copied slice s2 : %v
    ", s2)    // [8 9 2 3 4]
        fmt.Println("last array data : ", data)     // [8 9 2 3 4 5 6 7 8 9]
    
        // copy(s1, s2)
        // fmt.Printf("copied slice s1 : %v
    ", s1)    // [0 1]
        // fmt.Printf("copied slice s2 : %v
    ", s2)    // [0 1 2 3 4]
        // fmt.Println("last array data : ", data)     // [0 1 2 3 4 5 6 7 0 1]
    
        fmt.Printf("%p",&data[0])                   // 0xc04207e000
        fmt.Println()
        fmt.Printf("%p",&s2[0])                     // 0xc04207e000
    
    }
    原因,待确定
  • 相关阅读:
    Docker & ASP.NET Core (3):发布镜像
    Docker & ASP.NET Core (2):定制Docker镜像
    Docker & ASP.NET Core (1):把代码连接到容器
    Redis五大数据类型的常用操作
    centos安装Redis
    SpringBoot进阶教程(五十一)Linux部署Quartz
    mybatis在xml文件中处理转义字符
    org.apache.ibatis.builder.IncompleteElementException: Could not find result map java.lang.Integer
    SpringBoot进阶教程(五十)集成RabbitMQ---MQ实战演练
    浅谈RabbitMQ Management
  • 原文地址:https://www.cnblogs.com/yizhixiaowenzi/p/14673077.html
Copyright © 2011-2022 走看看