Golang(四)

目录

1.结构体

1.1 Golang语言面向对象编程说明

1.2 声明结构体

1.3 字段/属性

1.4 创建结构体变量和访问结构体字段

 1.5 使用注意事项

2.方法

2.1 方法的声明和调用

2.2注意事项

2.3 课后习题

 3.封装

3.1基本介绍

3.2 具体实现步骤

4.继承 

4.1 嵌套匿名结构体基本语法基本语法

4.2 便利性

4.3 继承的深入讨论

4.4 多重继承 

 5.接口

6.实现接口vs继承 

7.多态 

7.1

 7.2 类型断言


1.结构体

1.1 Golang语言面向对象编程说明

(1)Golang 没有类(class),Go语言的结构体(struct)与java的类(class)有同等地位

(2)Golang 面向对象非常简洁,没有传统OOP语言的继承,方法重载,构造函数等等

(3)Golang 仍然有面向对象编程的继承,封装和多态,但方式不一样

        比如继承不使用extends 关键字,而是通过匿名字段来实现

1.2 声明结构体

基本语法:

type 结构体名称 struct{

                        field1  type

                        field2  type

}

举例:

type 结构体名称 struct{

                        field1  type

                        field2  type

}

1.3 字段/属性

(1)结构体字段 = 属性 = field

(2)可以是基本类型也可以是引用类型

1.4 创建结构体变量和访问结构体字段

 

 1.5 使用注意事项

(1)结构体的所有字段在内存中是连续的st

(2)结构体的每个字段上,可以写上一个tag,该tag 可以通过反射机制获取,常见的使用场景是序列化和反序列化

2.方法

Golang中的方法是作用在指定的数据类型上的,因此自定义类型都可以有方法,不仅仅是struct

2.1 方法的声明和调用

type A struct{

        Num int

}

func (a A)test(){

        fmt.Println(a.Num)

}

 

(a A)体现test 方法是和A 类型绑定的

(1)方法的声明

func (receiver type) methodNme(参数列表)(返回值列表){

                方法体

                return 返回值

}

receiver type表示这个方法和type 这个类型绑定

2.2注意事项

(1)更改结构体变量通过结构体指针的方式

(2)方法的访问规则和函数一样

(3)如果一个类型实现了String()这个方法,那么fmt.Println会默认调用这个变量的String()进行输出

2.3 课后习题

baba 

 

 3.封装

3.1基本介绍

       把抽象的字段和对字段的基本操作封装在一起,程序的其他包只有通过授权的操作(方法)才能对字段进行操作

(1)好处:隐藏实现细节,对数据进行验证,保证安全合理

(2)实现封装:通过包、方法对结构体中的属性进行封装

3.2 具体实现步骤

4.继承 

4.1 嵌套匿名结构体基本语法基本语法

type Goods struct{

        Name string

        Price int

}

type Book struct{

        Goods//嵌套

        Writer string

}

4.2 便利性

(1)提高了代码的复用性

(2)代码的扩展性和维护性提高了

4.3 继承的深入讨论

(1)匿名结构体字段访问可以简化

 

 

 

4.4 多重继承 

 

 5.接口

 

 

 

 

6.实现接口vs继承 

 

7.多态 

7.1

 

 7.2 类型断言

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值