Go语言基础(5) | 青训营笔记

96 阅读2分钟

1.我会总结我自己认为Golang中的几个常用知识点的基础

每个人都有自己的认识,我只表达我的见解

2.我会说以下几点

  1. go语言的接口
  2. go语言结构体的特性
  3. channel
  4. goroutine

步入正题

1.go语言的接口

  1. 接口就是一些方法特征的集合,可以定义一些方法,这些方法可以不实现。
  2. 有点抽象说不能明白,代码演示
package main
import (
"fmt"
)
type Att interface{
name()
age()
}
type Jack struct{

}
func (j Jack)name(){
fmt.Println("jack name:jack")
}
func (j Jack)age(){
fmt.Println("jack age:18")
}
type Tom struct{
}
func(t Tom)name(){
fmt.Println("Tom name:Tom")
}
 func(t Tom)age(){
fmt.Println("Tom age:15")
}
type Student struct{

}
func(S Student)show(att Att){
att.name()
att.age()
}
func main (){
jack:=Jack
tom:=Tom
student :=Student
student.show(jack)
student.show(tom)
}
终端显示为 jack name:jack jack age:18 Tom name:Tom Tom age :15
  1. 这是定义Att的接口,来承载name()age()两个未实现的方法
  2. func(S Student)show(att Att)这个是用来接收Att的接口类型,att变量会根据传入的参数,来判断是jack还是tom
  1. 注意细节
  2. 一个类型能实现多个接口,不同类型也能实现统一接口
  3. 接口中不能含有变量

结构体的特性

1.封装

基本介绍:封装就是把抽象的字段和对字段的操作封装在一起,数据被保护在内部,程序的其他包只有通过被授权的操作才能对字段进行操作

说不出来个所以然...我太菜了,我理解的就是把结构体封装隐藏,通过工厂模式构造外部函数对结构体进行操作

2.继承

我认为就是结构体的嵌套 代码演示

type Student struct{
name string
age int
}
type Person struct{
Student //此结构体的内容已经继承在 Person结构体中
address string
}
  1. Student结构体继承在Person结构体中
  2. Person 结构体中含有 三个字段 name age address
  3. 其结构体的方法一样能在继承结构体中调用

3.多态

  1. 多态是通过一个接口调用不同的的实现来展现的,这时的接口变量就呈现不同的形态
  2. 例如前面的func(S Student)show(att Att)方法中,att展现了多态,既能调用jack结构体,又能调用Tom结构体

下边两个下个文章再写,时间不够了,要去上课了,吼吼吼