我對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
從規格,它看起來像[]串是不一樣的基本類型爲[]卡,所以不能進行類型轉換。
確實是這樣,或者我錯過了什麼?
如果是這樣的話,爲什麼這樣呢?假設在一個非寵物示例程序中,我輸入了一串字符串,是否有任何方法可以將它「投射」到一張卡片中,還是必須創建一個新結構並將數據複製到它中? (我想避免,因爲我需要調用的函數將修改切片內容)。
通過'類型卡字符串'你引入了一個實際的新類型,而不是一個類型別名。 'Card'是一種新的類型,它可以擁有一套方法和行爲。 – 2015-03-13 12:36:40