GOLANG学习28. 反射
反射:可以在运行时冬天的获取变量的相关信息
类型 t := reflect.TypeOf(i)
值 v := reflect.ValueOf(i)
类别 k := v.Kind()
其实我一直在你身边
反射:可以在运行时冬天的获取变量的相关信息
类型 t := reflect.TypeOf(i)
值 v := reflect.ValueOf(i)
类别 k := v.Kind()
结构体struct 实现了接口的方法,就自动实现了接口的定义
如果一个struct 嵌套了另一个匿名结构体,那么这个struct 可以直接访问这个匿名结构体里面的方法和字段,从而实现继承
如果一个struct 嵌套了另一个有名的结构体,那么这个模式就叫组合
定义:func (recevier type) methodName(参数列表)(返回值列表){}
type Student struct {
Name string
Age int
Score float32
Next *Student
}
链表在内存里可以不是连续存储的,数组是连续存储的,链表包括单项链表,和双向链表,通过指针指向下一个或者上个结构体地址
type Student struct {
Name string
Age int
Score float32
}
首字母大写代表可以被外包能访问,也就是public作用域
直接插入排序(Straight Insertion Sort)是一种最简单的排序方法,其基本操作是将一条记录插入到已排好的有序表中,从而得到一个新的、记录数量增1的有序表
第一层循环从起始元素开始选到倒数第二个元素,主要是在每次进入的第二层循环之前,将外层循环的下标赋值给临时变量,
接下来的第二层循环中,如果发现有比这个最小位置处的元素更小的元素,则将那个更小的元素的下标赋给临时变量,
最后,在二层循环退出后,如果临时变量改变,则说明,有比当前外层循环位置更小的元素,需要将这两个元素交换.
冒泡排序算法的运作如下:(从后往前)
1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
3.针对所有的元素重复以上的步骤,除了最后一个。
4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较
切片是数组的引用
切片的长度可以改变,切片是一个可变的数组
切片和数组一样,可以用len求长度
cap可以求切片的最大容量
切片的定义 var str []string