猿问

将字符串切片转换为自定义类型切片

我对 Go 很陌生,所以这可能很明显。编译器不允许以下代码:(http://play.golang.org/p/3sTLguUG3l)


package main


import "fmt"


type Card string

type Hand []Card


func NewHand(cards []Card) Hand {

    hand := Hand(cards)

    return hand

}


func main() {

    value := []string{"a", "b", "c"}

    firstHand := NewHand(value)

    fmt.Println(firstHand)

}

错误是: /tmp/sandbox089372356/main.go:15: cannot use value (type []string) as type []Card in argument to NewHand


从规范来看,[]string 与 []Card 的底层类型不同,因此无法进行类型转换。


确实如此,还是我错过了什么?


如果是这样,为什么会这样?假设,在一个非宠物示例程序中,我输入了一段字符串,有没有办法将它“投射”到一张卡片中,或者我是否必须创建一个新结构并将数据复制到其中? (我想避免这种情况,因为我需要调用的函数会修改切片内容)。


qq_遁去的一_1
浏览 226回答 1
1回答
随时随地看视频慕课网APP

相关分类

Go
我要回答