切片append作用

一、
d := append(c, e...) d的长度如果没有超过c的容量,则共享数组。
否则,搬迁。
二、copy值拷贝。

package main

import "fmt"

func Repeat(s string, count int) string {
    b := make([]byte, len(s)*count)
    bp := copy(b, s)
    fmt.Println(bp)
    for bp < len(b) {
        copy(b[bp:], b[:bp])
        bp *= 2
    }
    return string(b)
}

func test2() {
    data := make([]int, 10, 20)
    data[0] = 1
    data[1] = 2
    fmt.Println("length:", len(data), ":", data)
    dataappend := make([]int, 10, 20)//len <=10 则   result[0] = 99 会 影响源Slice
    dataappend[0] = 1
    dataappend[1] = 2
    fmt.Println("length:", len(dataappend), ":", dataappend)
    result := append(data, dataappend...)
    result[0] = 99
    result[11] = 98
    data = append(data, 88)
    fmt.Println("length:", len(data), ":", data)
    fmt.Println("length:", len(result), ":", result)
    fmt.Println("length:", len(dataappend), ":", dataappend)


}

func main() {
    //str := Repeat("_", 50)
    //fmt.Println(str)

    //var a []int
    //a = []int{1, 2, 3, 4}
    //var b []int
    //b = make([]int, 4)
    //copy(b, a)
    //b[1] = 999
    //fmt.Println(b, a)
    //
    //
    //c := []int{5, 6, 7, 8}
    c := make([]int, 4, 6)
    c[0] = 5
    c[1] = 5
    c[2] = 5
    c[3] = 5
    e := make([]int, 2, 6)
    e[0] = 10
    e[1] = 11
    d := append(c, e...)
    d[1] = 888
    c[2] = 666
    fmt.Println(c, d)

    //test2()
}


©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • ———————————————回答好下面的足够了---------------------------------...
    恒爱DE问候阅读 1,835评论 0 4
  • Python语言特性 1 Python的函数参数传递 看两个如下例子,分析运行结果: 代码一: a = 1 def...
    时光清浅03阅读 556评论 0 0
  • 最全的iOS面试题及答案 iOS面试小贴士 ———————————————回答好下面的足够了-----------...
    zweic阅读 2,795评论 0 73
  • 数组 和C语言一样,Go语言中也有数组的概念, Go语言中的数组也是用于保存一组相同类型的数据 和C语言一样,Go...
    极客江南阅读 1,265评论 0 2
  • 你除了努力,其他的都不用管 下班前回头看了一下每天出入的地方 晚上亮灯之后竟然有一种皇宫即视感
    故人醉思烟阅读 193评论 0 1

友情链接更多精彩内容