golang 将切片{0,1,2,3,4} 转换为切片{1,2,3}?

and*_*dev 1 arrays go slice

我有动态的字符串片段,例如 {"0s"、"1s"、"2s"、"3s"、"4s"}。
我有索引的动态切片,例如 {1, 2, 3}。
所以我只需要切片中索引为 1、2 和 3 的元素。
请注意,索引切片和数据切片都是动态的。

package main

import (
    "fmt"
)

func main() {
    indexes := []uint8{1, 2, 3}              //dynamic slice. maybe different elements and count
    data := []string{"0s", "1s", "2s", "3s", } //dynamic slice. maybe different elements and count

    // I need convert data to {"1s", "2s", "3s"} using indexes (dynamic) slice
    fmt.Println(data)
    fmt.Println(indexes)
}
Run Code Online (Sandbox Code Playgroud)

这里游乐场网址https://play.golang.org/p/Vj0Vl5va4LP

小智 8

要使用从索引切片检索到的索引值创建新的数据切片,您必须迭代索引切片并将value索引切片作为index数据切片传递。以下是具有此逻辑的代码

package main

import (
    "fmt"
)

func main() {
    indexes := []uint8{1, 2, 3}
    data := []string{"0s", "1s", "2s", "3s"}
    var newData []string

    fmt.Println(data)
    fmt.Println(indexes)

    for _, v2 := range indexes {

        newData = append(newData, data[v2])
    }
    fmt.Println(newData)
}
Run Code Online (Sandbox Code Playgroud)

输出 :

[0s 1s 2s 3s]
[1 2 3]
[1s 2s 3s]
Run Code Online (Sandbox Code Playgroud)