为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
紫衣仙女 2023-06-26 15:30:12
我正在做下面的练习。创建一个包含四个元素的切片。创建一个新切片并将第三个和第四个元素仅复制到其中。我已经返回以下程序    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]我的程序出了什么问题。
查看完整描述

2 回答

?
猛跑小猪

TA贡献1858条经验 获得超8个赞

使用内置的复制功能将元素从一个切片复制到另一个切片。

var newElements = make([]string, 2)
copy(newElements, elements[2:])

在操场上跑起来

您可以使用append来创建切片并在单个语句中复制元素,但代码并不像使用copy那么明显。

newElements := append([]string(nil), elements[2:4]...)

在操场上运行它


查看完整回答
反对 回复 2023-06-26
?
慕运维8079593

TA贡献1876条经验 获得超5个赞

问题出在线路上newElements = append(elements[:0], elements[:2]...)。这里的elements[:2]意思是元素elements[0],elements[1]。这就是为什么你的输出是[1,2]. 对于第三个和第四个元素,请使用 this elements[2:4]。


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:4]...)

    fmt.Println(newElements)

}


查看完整回答
反对 回复 2023-06-26
  • 2 回答
  • 0 关注
  • 148 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信