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的类型断言 类型断言 断言x不为nil且x为T类型 如果T不是接口类型,则该断言x...
    go4it阅读 1,508评论 0 0
  • 简介 反射是一种机制,在编译时不知道具体类型的情况下,可以透视结构的组成、更新值。使用反射,可以让我们编写出能统一...
    darjun阅读 577评论 0 1
  • 整理自golang中文网https://studygolang.com/ 以及公众号 golang来啦 (侵删)...
    p_gerer阅读 1,855评论 1 2
  • 1,slice append [00000123] [1234] append一定是在长度后追加 typeMyIn...
    明明就_c565阅读 304评论 0 0
  • package main import("fmt")type shaper interface{}type cir...
    skoll阅读 426评论 0 0