1.Golang语言面向对象编程说明

  1)Golang也支持面向对象编程(OOP),但是和传统的面向对象编程有区别,并不是纯粹的面向对象语言。所以我们说Golang支持面向对象编程特性是比较准确的。

  2)Golang没有类(class),Go语言的结构体(struct)和其它编程语言的类(class)有同等的地位,你可以理解Golang是基于struct来实现OOP特性的。

  3)Golang面向对象编程非常简洁,去掉了传统OOP语言的继承、方法重载、构造函数和析构函数、隐藏的this指针等等。

  4)Golang仍然有面向对象编程的继承,封装和多态的特性,只是实现的方式和其它OOP语言不一样,比如继承:Golang没有extends关键字,继承是通过匿名字段来实现的。

  5)Golang面向对象(OOP)很优雅,OOP本身就是语言类型系统(type system)的一部分,通过接口关联,耦合性低,也非常灵活。后面同学们会充值体会到这个特点。也就是说在Golang中面向接口编程是非常重要的特性。

type Cat struct {
Name string
Age int
Color string
Hobby string
} func main() {
var cat Cat
cat.Name = "allin"
cat.Age = 18
cat.Color = "red"
cat.Hobby = "eat" fmt.Println(cat)
fmt.Println(cat.Hobby)
}

2.结构体和结构体变量(实例)的区别和联系

  1)结构体是自定义的数据类型,代表一类事物

  2)结构体变量(实例)是具体的,实际的,代表一个具体变量

 结构体基本语法

    type 结构体名称 struct {

      field1 type

      field2 type

    }

结构体注意事项和细节说明

  1)字段声明语法同变量,示例:字段名  字段类型

  2)字段的类型可以为:基本类型、数组或引用类型

  3)在创建一个结构体变量后,如果没有给字段赋值,都对应一个零值(默认值),规则同前面讲的一样:

    布尔类型是false,数值是0,字符串是“”。

    数组类型的默认值和它的元素类型相关,比如 score [3]int 则为 [0, 0, 0]

    指针,slice,和map的零值都是nil,即还没有分配空间。

type Person struct {
Name string
Age int
Scores [5]float64
ptr *int
slice []int
map1 map[string]string
} func main() {
var p1 Person
fmt.Println(p1)
   // 使用slice和map,一定要先make
p1.slice = make([]int, 10)
p1.slice[0] = 100 p1.map1 = make(map[string]string)
p1.map1["key"] = "tom~"
fmt.Println(p1)
}

  4)不两只结构体变量的字段是独立,互不影响,一个结构体变量字段的更改,不影响另外一个,结构体是值类型。

最新文章

  1. RabbitMQ学习系列(五): RPC 远程过程调用
  2. [Android Pro] PullToRefreshListView怎么设置各个item之间的间距
  3. js中Prototype属性解释及常用方法
  4. HTML5标准简介
  5. python使用zlib实现压缩与解压字符串
  6. 《Pandoc用户指南》之一
  7. UVa 10075 - Airlines
  8. 《A First Course in Probability》-chaper5-连续型随机变量-基本概念
  9. jquery ajax(5)form表单序列化
  10. java中加载xml文件方法
  11. Filezilla出现中文乱码
  12. Nginx+Php-fpm+MySQL+Redis源码编译安装指南
  13. H5单张、多张图片上传
  14. hbase-0.92.1过滤器学习
  15. 03抽象工厂模式AbstractFactory
  16. Fiddler 抓包工具总结【转载】
  17. javascript Function类型
  18. __inline定义的内联函数和宏的区别
  19. 转载:vim的复制,删除,粘贴,块操作以及快速替换功能
  20. ClassPathXmlApplicationContext类

热门文章

  1. [提权]Windows COM组件提权漏洞 (CVE-2017-0213)
  2. AT2306 Rearranging
  3. linux red hat下安装tomcat的过程
  4. ICEM-三棱锥的一种画法(2D转3D)
  5. 数据结构Java版之排序算法(二)
  6. 我的BO之状态控制
  7. HearthBuddy模拟对手的回合
  8. OpenTK学习笔记(2)-工作窗口的三种方法创建方法(控制台)
  9. $createElement实现自定义弹窗
  10. DBUtil内部实现过程解读