指针切片到类型切片到另一类型切片之间的Golang类型转换

指针切片到类型切片到另一类型切片之间的Golang类型转换,go,casting,type-conversion,protocol-buffers,grpc,Go,Casting,Type Conversion,Protocol Buffers,Grpc,我是刚来戈朗的。 当我尝试它时,我得到一个编译错误: cannot use a.B (type []*C) as type []Z in field value 代码: 我考虑的方法是迭代切片并将其分配给另一个切片。但我知道一定有其他方法可以做到这一点 去操场:使用for循环来转换片中的每个值。别无选择 使用for循环来转换片中的每个值。别无选择 不,没有其他(安全的)方法。切片是不变的,必须复制它们才能更改每个元素的类型。这与否的概念相同,没有其他(安全的)方法。切片是不变的,必须复制它们才

我是刚来戈朗的。
当我尝试它时,我得到一个编译错误:

cannot use a.B (type []*C) as type []Z in field value
代码:

我考虑的方法是迭代切片并将其分配给另一个切片。但我知道一定有其他方法可以做到这一点


去操场:

使用
for
循环来转换片中的每个值。别无选择


使用
for
循环来转换片中的每个值。别无选择

不,没有其他(安全的)方法。切片是不变的,必须复制它们才能更改每个元素的类型。这与否的概念相同,没有其他(安全的)方法。切片是不变的,必须复制它们才能更改每个元素的类型。这个概念和
package main

type A struct {
    B []*C
}

type C struct {
    char string
}

type X struct {
    Y []Z
}

type Z struct {
    char string
}

func doSomething(r interface{}) X {
    a := r.(*A)
    return X{
        Y: a.B, // cannot use a.B (type []*C) as type []Z in field value
    }
}

func main() {
    something := &C{"abc"}
    somewhere := A{}
    somewhere.B = []*C{something}

    doSomething(somewhere)
}