• 54_Go基础_1_21 切片的拷贝


     1 package main
     2 
     3 import "fmt"
     4 
     5 func main() {
     6     /*
     7         深拷贝:拷贝的是数据本身。
     8             值类型的数据,默认都是深拷贝:array,int,float,string,bool,struct
     9 
    10 
    11         浅拷贝:拷贝的是数据 地址。
    12             导致多个变量指向同一块内存
    13             引用类型的数据,默认都是浅拷贝:slice,map,
    14 
    15             因为切片是引用类型的数据,直接拷贝的是地址。
    16 
    17         func copy(dst, src []Type) int
    18             可以实现切片的拷贝
    19 
    20     */
    21 
    22     s1 := []int{1, 2, 3, 4}
    23     s2 := make([]int, 0) //len:0,cap:0
    24     for i := 0; i < len(s1); i++ {
    25         s2 = append(s2, s1[i])
    26     }
    27     fmt.Println(s1) // [1 2 3 4]
    28     fmt.Println(s2) // [1 2 3 4]
    29 
    30     s1[0] = 100
    31     fmt.Println(s1) // [100 2 3 4]
    32     fmt.Println(s2) // [1 2 3 4]
    33 
    34     //copy()
    35     s3 := []int{7, 8, 9}
    36     fmt.Println(s2) // [1 2 3 4]
    37     fmt.Println(s3) // [7 8 9]
    38 
    39     // copy(s2, s3)    // 将s3中的元素,拷贝到s2中
    40     // fmt.Println(s2) // [7 8 9 4]
    41 
    42     // copy(s3, s2)    // 将s2中的元素,拷贝到s3中
    43     // fmt.Println(s3) // [1 2 3]
    44 
    45     copy(s3[1:], s2[2:])
    46     fmt.Println(s3) // [7 3 4]
    47 
    48 }
  • 相关阅读:
    The Chinese Postman Problem HIT
    Chinese Postman Problem Aizu
    矩阵游戏 HYSBZ
    最大获利 HYSBZ
    asp.net+MVC--1
    -----IT男生涯————初始篇
    Permutation
    RMQ with Shifts
    Fast Matrix Operations
    "Ray, Pass me the dishes!"
  • 原文地址:https://www.cnblogs.com/luwei0915/p/15628686.html
Copyright © 2020-2023  润新知