Go语言 type关键字

type有几种用法:定义结构体,定义接口, 类型别名, 类型定义, 类型开关

定义结构体
结构体是由一系列具有相同类型或不同类型的数据构成的数据集合。类似Java 的类,我们可以把Go中的struct看作是不支持继承行为的轻量级的“类”。
我们来看看使用type怎么定义结构体:

//定义一个 Books结构体
type Books struct {
   title string
   author string
   subject string
   book_id int
}

//结构体内内嵌匿名成员变量定义
func main() {
   p := person{"abc",12}
   fmt.Println(p.string,p.int)
}

type person struct {
   string
   int
}

定义接口

//定义电话接口
type Phone interface {
   call()
}

自定义类型

type name string   // 使用 type 基于现有基础类型,结构体,函数类型创建用户自定义类型。

在这里要区别 var声明方式

var name string    //这里是定义一个string变量

注:类型别名,只能对包内的类型产生作用,对包外的类型采用类型别名,在编译时将会提示如下信息:

cannot define new methods on non-local type string

类型定义
除了给已知的类型起别名,还可以针对新类型(自定义类型)函数进行定义

type handle func(str string)  //自定义一个函数func,别名叫做handle,传入一个string参数

类型开关
在Go语言中中存在interface{}类型,可以用来保存任何类型的值,如果我们需要知道具体保存了哪些类型,就需要使用类型开关来判断,具体代码如下:

func classifier(items ...interface{})  {
   for i,x := range items {
      switch x.(type) {
      case bool:
         fmt.Printf("type #%d is bool",i)
      case float64:
         fmt.Printf("type #%d is float64",i)
      case string:
         fmt.Printf("type #%d is string",i)
      case int:
         fmt.Printf("type #%d is int",i)
      default:
         fmt.Printf("type is unknow")
      }
   }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,461评论 19 139
  • 出处---Go编程语言 欢迎来到 Go 编程语言指南。本指南涵盖了该语言的大部分重要特性 Go 语言的交互式简介,...
    Tuberose阅读 18,609评论 1 46
  • 细雨知秋送沁凉,梧桐已见叶枯黄。 天潇云肃轻风远,雁飞鹊啼翠竹寒。 幽静文笔情有驻,闲愁墨客冷无芳。 结字措句缓枯...
    逸塵居士阅读 2,394评论 0 0
  • 相识10年,相爱3年。 就在2017年,我们彻底结束了。 在一起的时间里,我可能一度丢失了自己,为了你的情绪,夏天...
    青青樱阅读 3,570评论 0 0
  • 风翼一生阅读 897评论 0 0