当前位置: 首页 > 面试题库 >

Golang:不同结构类型之间是否可以转换?

苍志文
2023-03-14
问题内容

假设我有两种类似的类型设置为:

type type1 []struct {
    Field1 string
    Field2 int
}
type type2 []struct {
    Field1 string
    Field2 int
}

知道它们具有相同的字段,是否有直接的方法将值从类型1写入类型2?(除了编写将所有字段从源复制到目标的循环外)

谢谢。


问题答案:

对于您的特定示例,您可以轻松地将其转换playground

t1 := type1{{"A", 1}, {"B", 2}}
t2 := type2(t1)
fmt.Println(t2)


 类似资料:
  • 问题内容: 我在以下测试代码中尝试转换为a 时并没有完全理解问题所在: 与有所不同 吗? 还是ListSociete与ListSociete不同? 谢谢。 问题答案: 您当前正在处理两种不同的类型: 和匿名的: 如果不是标记,那么这两个将是相同的。在 围棋规格 的状态(我的重点): 如果两个struct类型具有相同的字段序列,并且对应的字段具有相同的名称,相同的类型 和相同的tag ,则它们是 相

  • 问题内容: 假设我有2个结构: 我想反映扩展结构来获取它的领域: 问题答案: 只需检查值的Kind()

  • 我试图在java中实现不同类型之间的转换器:我有一个超级类foo,有2个子类: fo1和fo2,我也有2个不相关的其他类bar1和bar2,我试图实现一个转换器从bar1到fo1和bar2to fo2(与之相反)。 因为我在这里有继承,所以我想应该创建一个泛型类型的接口(将是bar1或bar2),它将定义转换所需的函数,我还想让转换器成为bar1和bar2的通用转换器,我认为它应该以某种方式使用接

  • 问题内容: 我从UDP套接字获取了一个字节片(),并希望将其视为整数片(),而无需更改基础数组,反之亦然。在C(++)中,我只是在指针类型之间进行转换;我将如何在Go中执行此操作? 问题答案: 正如其他人所说,在Go中强制转换指针被认为是错误的形式。这是正确的Go方式示例以及与C数组转换等效的示例。 警告:所有代码未经测试。 在此示例中,我们使用包将每组4个字节转换为。这样更好,因为我们指定了字节

  • 问题内容: 阅读了有关在地图中使用切片的相关问题之后,我对Go中的相等性感到好奇。 我知道有可能重写Java方法。有没有类似的方法来定义Go如何检查用户定义的类型/结构是否相等?如果是这样,将有一个针对上述问题的解决方法。我以为使用值可能会提供解决方案,但我收到了错误消息。 问题答案: Go支持相等性检查结构。 它不能与指针字段一起使用(按照您想要的方式),因为指针地址不同。 您无法修改相等运算符

  • 问题内容: 我有以下几种类型: 我可以使用use ,但是我 不能 使用 似乎可以嵌入语法,但是使用它无效吗? 问题答案: 嵌入式类型是(未命名的)字段,由不合格的类型名称引用。 规格:结构类型: 使用类型但没有显式字段名称声明的字段是 匿名字段 ,也称为 嵌入式 字段或该类型在结构中的嵌入。必须将嵌入式类型指定为类型名称或指向非接口类型名称的指针,并且本身不能为指针类型。 非限定类型名称充当字段名