在内部有切片的两个结构之间传递值

Passing values between two structs thats have a slice inside

我有 2 个结构,里面有一个切片,如下所示:

type BookX struct {
  SomeValue string
  Book1 []Book1
}
type Book1 struct {
  Name string
  Author string
}

type BookY struct {
  SomeValue string
  Book2 []Book2
}
type Book2 struct {
  Name string
  Author string
}

我想将结构 BookX 中第一个切片中的值传递给 BookY 中的另一个切片。

试过这种方法但不起作用:

func someName(bookX BookX){
  var bookY BookY
  bookY.Book2 = append(bookY.Book2, bookX.Book1...)
}

Book1Book2 是不同的类型,即使它们具有相同的成员。您不能将 []Book1 附加到 []Book2

一个解决方案是从 Book1 创建一个 Book2 实例并将它们添加到 []Book2

func someName(bookX BookX){
  var bookY BookY
  for _, book1 := range bookx.Book1 {
    book2 := Book2 {
      Name: book1.Name,
      Author: book1.Author,
    }
    bookY.Book2 = append(bookY.Book2, book2)
  }
}