golang类型断言

type Animal interface {

  Speak()

}

type Cat struct {

  Name string

}

func(c Cat)Speak() {

  fmt.Println("Meow")

}

funcmain() {

  var a Animal

  a = Cat{Name: "kitty"}

  a.Speak()

  c := a.(Cat)

  fmt.Println(c.Name)

}

c := a.(Cat) 如果类型断言的类型与实际存储的类型不符,会直接 panic。

所以实际开发中,通常使用另一种类型断言形式c, ok := a.(Cat)。如果类型不符,这种形式不会 panic,而是通过将第二个返回值置为 false 来表明这种情况

你可能感兴趣的:(golang类型断言)