gpt4 book ai didi

go - 如何将数据从一个结构片移动到另一个结构片?

转载 作者:IT王子 更新时间:2023-10-29 02:29:14 25 4
gpt4 key购买 nike

我有两个结构:

type A struct {
Field1 string
Field2 int
Field3 int
}
type B struct {
Field1 string
Field2 int
}

我想将一片 []A 数据 (aData) 转换为一片 []B 数据 (bData)。

这样做的惯用方法是什么?

我试过的是this :

var newItem B
var aData []A
var bData []B


aData = [{"bob", 3, 4}, {"mary", 5, 2}]


for i:=0 ; i < len(aData); i++ {

newItem = {aData[i].Field1, aData[i].Field2}
bData = append( bData, newItem )
}

但是它给出了:

syntax error: missing operand

最佳答案

首先,您的代码无效。您的 aData 声明需要一个有效的数组表达式,并且在分配给 bData 时需要指定类型。

aData := []A{{"bob", 3, 4}, {"mary", 5, 2}}
bData := make([]B, len(aData))

for i, aItem := range aData {
bData[i] = B{
Field1: aItem.Field1,
Field2: aItem.Field2,
}
}

所以除了你的语法错误之外,这更符合地道,因为:

  1. 它使用 range 而不是 for 循环,这非常适合遍历数组,并且更具可读性。
  2. bData 已预先分配到所需的确切大小。
  3. 字段名称在 bData 的值声明中指定。对 aData 也做同样的事情会更符合习惯,但会有点冗长。

关于go - 如何将数据从一个结构片移动到另一个结构片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44755921/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com