复制数组(无大小)

Alo*_* G. 2 arrays go

我是新手,我试图从数组中提取一些特定数据(Employee.ID)并将其插入另一个(新)数组.

到目前为止,我没有运气,我使用的代码如下:

package main

import (
    "fmt"
)

type Employee struct {
    ID         int64
    Name       string
    Department string
}

func main() {
    employees := []Employee{{1, "Ram", "India"}, {2, "Criest", "Europe"}}
    ids := []int64{}
    for i, v := range employees {
        fmt.Println(i, v)
    }
}
Run Code Online (Sandbox Code Playgroud)

简而言之,我想从employees数组中提取ID 并将其复制到ids数组中.employees数组的大小在任何时间点都不固定.

感谢你的帮助.

cap*_*aig 6

您可以获得切片的长度len(employees).通常,如果您ids := make([]int64, length)事先知道大小,则可以选择,ids := []int64{}因为随着切片的增长,它将导致更少的分配.

ids := make([]int64, len(employees))
for i,e := range employees{
   ids[i] = e.ID
}
Run Code Online (Sandbox Code Playgroud)

或略有替代风格:

ids := make([]int64, 0, len(employees)) // declare capacity, but not length
for _ , e := range employees{
   ids = append(ids, e.ID)
}
Run Code Online (Sandbox Code Playgroud)