猿问

go中如何将一个切片的内容复制到另一个切片

我正在做下面的练习。


创建一个包含四个元素的切片。创建一个新切片并将第三个和第四个元素仅复制到其中。


我已经返回以下程序


    package main


    import "fmt"


    func main() {

        var elements = make([]string, 4)

        elements[0] = "1"

        elements[1] = "2"

        elements[2] = "3"

        elements[3] = "4"

        fmt.Println(elements)


        var newElements = make([]string, 2)

        newElements = append(elements[:0], elements[:2]...)

        fmt.Println(newElements)

    }

我的程序的输出是。但我希望 newElements 切片为 [3 4]-


[1 2 3 4]

[1 2]

我的程序出了什么问题。


紫衣仙女
浏览 149回答 2
2回答

猛跑小猪

使用内置的复制功能将元素从一个切片复制到另一个切片。var newElements = make([]string, 2) copy(newElements, elements[2:])在操场上跑起来您可以使用append来创建切片并在单个语句中复制元素,但代码并不像使用copy那么明显。newElements := append([]string(nil), elements[2:4]...)在操场上运行它。

慕运维8079593

问题出在线路上newElements = append(elements[:0], elements[:2]...)。这里的elements[:2]意思是元素elements[0],elements[1]。这就是为什么你的输出是[1,2]. 对于第三个和第四个元素,请使用 this elements[2:4]。package mainimport "fmt"func main() {    var elements = make([]string, 4)    elements[0] = "1"    elements[1] = "2"    elements[2] = "3"    elements[3] = "4"    fmt.Println(elements)    var newElements = make([]string, 2)    newElements = append(elements[:0], elements[2:4]...)    fmt.Println(newElements)}
随时随地看视频慕课网APP

相关分类

Go
我要回答