type Animal struct {
Colour string
}
type Student struct {
Animal
Name string
Age int
}
func (d *Student) Run() {
fmt.Println(d.Name, "is running")
}
func (d *Animal) Eat() {
fmt.Println(d.Colour, "is eating")
}
package struct_demo
import "fmt"
type Student struct {
Name string
Age int
}
func TestStudent() {
// 方式一
student := Student{
Name: "张三",
Age: 18,
}
fmt.Println(student)
// 方式二
student2 := Student{}
student2.Name = "李四"
student2.Age = 20
fmt.Println(student2)
// 方式三
var student3 Student
student3.Name = "王五"
student3.Age = 22
fmt.Println(student3)
// 方式四
newStudent := new(Student) //区别:new() 函数返回的是指向结构体的指针
newStudent.Name = "赵六"
newStudent.Age = 24
fmt.Println(newStudent)
}
make :
返回: 引用类型
切片,map,chan
new:
返回:指针类型
函数参数 Type 用于创建变量的数据类型
-----------------------
添加: append()
删除: delete()
拷贝 :copy()
----------------------
错误和异常:
defer func() {
message := recover()
switch message.(type) {
case string:
fmt.Println("type:", reflect.TypeOf(message), "panic message:", message)
case error:
fmt.Println("type:", reflect.TypeOf(message), "panic error:", message)
}
}()
//panic("test panic")
panic(errors.New("I am an error"))
func getLen() {
mIDSliceDst := make([]string,2,5) //容量5个只是指无需操作内存了,而不是指能创建五个元素
mIDSliceDst[0] = "id1"
mIDSliceDst[1] = "id2"
fmt.Println(len(mIDSliceDst)) //长度
fmt.Println(cap(mIDSliceDst)) //容量
}
func (){
mChan := make(chan int,1)
mChan <- 1 // 往chan里面写数据
close(mChan) // 关闭后就不可以往chan里面写数据了,起到限制作用,一般项目里面会加个defer
}
defer 执行完成所有程序后再执行defer后的程序
message:=reocover()
查看捕获到的错误类型
message.(type)
panic 抛出异常
recover 捕获异常
delete只能删除“键值”,所以只适用于Map
new()出来的,是指针类型
make()出来的,是引用类型
fmt.println(reflect.TypeOf())
查看类型
map[关键词类型]值类型
比如:
makeMap:=make(map[int]string)
makeMap["10"]="dog"
main.go是go语言的一个入口文件
make就是内建方法,类似创建内存
内建方法-创建json数据或者数据对
1.切片数组
func makeSlice(){
mSlice :=make([]string,3)
mSlice[0]="dog"
mSlice[0]="cat"
mSlice[0]="tiger"
fmt.Println(mSlice)
}
2.创建数据对map
func makeMap() {
mMap :=make(map[string]string)
mMap["name"]="大帅哥"
mMap["age"]="12"
mMap["lastname"]="小帅哥"
fmt.Println()
}
2223
接口
make返回的是引用类型
make
内建方法,不需要引入任何的包
创建 slice map chan
copy
append
new 打印的是指针类型 make答应出来是引用类型
go env 查看go的环境
结构体:若干字段的集合
多看api
多练习
多写demo
与make方法不同的是,make返回的是引用类型,而new方法返回的是指针类型
内建方法:不需要引用包,直接调用
make
创建 slice(切片)、map、chan(管道)
学习方法
28法则,掌握20%的重点知识,应付日常80%的工作
系统工具 sync.waitgroup
Add(delta int) 添加协程记录
Done() 移除协程记录
Wait() 同步等待所有记录的协程全部结束
结构体,是若干字段的集合
定义 struct
初始化
panic 抛出异常
recover 捕获异常