• go中没有类的概念,只有结构体。

定义结构体使用type struct 关键字

type typeName struct {var1 Typevar2 Type...varn Type
}
  • 其它面向对象的语言中类包含属性和方法,go中定义类的方法和定义函数很像

定义函数:

func funcName (param Type ...) returnType {
}

定义方法:

func (t Type) methodName (param Type...) returnType {
}

两者的区别仅仅是方法中在func关键字和方法名之间多了一个接收者类型。

  • 接口

一般面向对象的接口是定义一个对象的行为,指定对象应该做什么,而如何实现这个行为细节则由对象本身确定。

像java中需要类方法中显示的声明实现了该接口,go中只要类型方法定义了接口中所有方法,该类型就实现了该接口。

interface是方法的集合,是一种类型。多个类型可以实现同一个 接口,一个类型可以实现多个接口。

定义接口:

type interfaceName interface {methodName1() [returnType]methodName2() [returnType]...methodNamen() [returnType]
}

实现接口:

func (typeName Type) methodName1() [returnType] {} 

空接口可以接收任何类型,可以实现万能切片 :[]interface{}

任意map : [Type] interface {}

go 结构体和类 函数和方法 接口相关推荐

  1. 初识Golang的面向对象 为结构体(类)绑定方法

    前言 Go语言面向对象 Go语言仅支持封装 不支持继承和多态 继承和多态通过接口实现 成员函数的实现 创建类对象在Go语言中表现为创建一个结构体变量 可以定义一个工厂函数 专门负责初始化结构体(类)变 ...

  2. swift string转int_swift中结构体和类的区别(值类型和引用类型的区别)

    在swift中结构体和类有着更多的相同之处,在一般的使用中能够做到互相替换.我们可以先看看官方文档的描述: Unlike other programming languages, Swift does ...

  3. c语言结构体作为形参是否加struct_(struct)结构体变量作为函数参数调用的方法小结...

    结构体变量作为函数参数传递的3种方法将一个结构体变量中的数据传递给另一个函数,有下列3种方法:用结构体变量名作参数.一般较少用这种方法.用指向结构体变量 结构体变量.结构指针变量.结构数组作为函数的参 ...

  4. C++:C++语言入门级基础知识考察点回顾之函数、结构体和类

    C++:C++语言入门级基础知识考察点回顾之函数.结构体和类 目录 C++的函数 1.函数的定义.调用,全局变量局部变量 1.1.自定义函数求其倒数

  5. 结构体中定义函数指针

    结构体指针变量的定义,定义结构体变量的一般形式如下: 形式1:先定义结构体类型,再定义变量 struct结构体标识符 { 成员变量列表;- }; struct 结构体标识符 *指针变量名; 变量初始化 ...

  6. Swift结构体与类

    在面向过程的编程语言(如C语言)中,结构体用得比较多,但是面向对象之后,如在C++和Objective-C中,结构体已经很少使用了.这是因为结构体能够做的事情,类完全可以取而代之. 而Swift语言却 ...

  7. Go 系列教程 —— 26. 结构体取代类

    欢迎来到 Golang 系列教程的第 26 篇. Go 支持面向对象吗? Go 并不是完全面向对象的编程语言.Go 官网的 FAQ 回答了 Go 是否是面向对象语言,摘录如下. 可以说是,也可以说不是 ...

  8. C/C++中结构体和类的区别

    结构体是为能够保存不同类型的数据而存在的,因为数组朱能够保存一种数据类型,而在平时的编程中我们需要用到不同数据类型的一个整体结构,例如一个学生就有不同的属性,姓名,年龄,学号,性别等等,就需要用不同的 ...

  9. C++中的结构体与类

    C++中继承了C语言中的结构体,但同时也在C语言的基础上新增了一个类(class)的概念,类可以说是C语言中结构体的升级版,这里主要细讲C++中的类 1.C++结构体 2.C++类 1.c语言结构体: ...

最新文章

  1. dropdown.js
  2. Kubernetes 容器网络模型和典型实现
  3. TCP长连接与短连接的区别(转)
  4. .NET Remoting开发系列:(三) Remoting服务发布方式
  5. 【我评】——关于Web标准
  6. python:01字串
  7. 【转】beyond compare 启动提示“应用程序发生错误”
  8. QT_继承ApplicationWindow控件的C++与QML交互
  9. viewport属性
  10. 创意网页排版设计和教程分享,打造 “视”不可挡的网页设计
  11. 软件测试周刊(第31期):所有的伟大 都源于一个勇敢的开始
  12. 数据库视图效率低下一例
  13. linux物理服务器搬迁后,更换了路由器,ping不同外网
  14. HDMI九画面视频分割器(MT-SW091)
  15. autoit-v3 编辑工具SciTE Script Editor 解决中文乱码+中文换行崩溃问题
  16. 【转】十大顶级奢侈品服装品牌
  17. 杰理之音箱版本 SDK200 单音 VCOMO 直推,喇叭没声音问题【篇】
  18. 关于Unity中的NGUI优化,你可能遇到这些问题
  19. 【接口调用】EasyCVR获取直播流接口调用过程
  20. python中的super是什么?

热门文章

  1. linux 命令行下载axel
  2. 成功解决:python列表转成字符串,同时自定义分隔符
  3. 您的计算机无法访问dota2,解决win7系统DOTA2无法连接至Steam网络的设置方法
  4. 南通贝尔机器人_南通中专获世界机器人大赛总决赛二等奖
  5. 火车售票系统以及改良版
  6. 直播互动软件有哪些?
  7. 通信工程本科可以考计算机研究生吗,本科的通信有哪些专业考研
  8. Arthas诊断工具(二)jadmcredefine命令
  9. 怎么开通融资融券账户?两融账户的开通条件?开融资融券账户交易佣金低是多少?
  10. 用AD设计PCB时,原理图是从别的工程中复制过来的,在工程原理图 Compile时会出现 Unique ID 重复的错错...