一 数据类型分类
值类型 1 值类型包括基本数据类型,int,float,bool,string,以及数组和结构体(struct)
2 值类型变量声明后,不管是否已经赋值,编译器为其分配内存,此时该值存储于栈上
3 改变引用对象,不会影响源值
引用类型 1 引用类型包括指针,slice切片,map ,chan,interface。
2 变量直接存放的就是一个内存地址值,这个地址值指向的空间存的才是值
3 改变引用对象,会影响原值
二 常用数据类型-数组和切片
1 使用方法
1 数组- var 数组名 [元素个数]数据类型->定义 如果元素个数不确定可以用...代替,会自动试别元素个数
2 切片- var 切片名 []数据类型
方法1 var arr2 []int(结构体常用定义)- arr2=[]int{1,3,5}(初始化值)
方法2 var arr2 []int = make([]int,已有个数,总个数)(利用make申请)
2 循环
for i:=0 i<=len(数组/切片名):;i++ {
数组名[i]
}
3 理论补充
1 区分数组和切片的方式很简单,直接看定义时[]是否有内容,有则为数组,无则为切片
2 切片是引用类型 数组是值类型要区分开来
3 切片应用场景远远超过数组,推荐直接使用
4 函数
append() 给分片扩容
用法 var test1 []int =[]int{1,2,3} test1:=append(test1,4,5,6)->必须重新赋值引用,也可以追加切片(切片名...)(是创建新的数组包含分片,所以需要重新引用新数组)
len() 计算切片大小
copy(切片1,切片2) 将切片2拷贝到切片1上 只能支持切片拷贝 将代替切片1的相应位置
5 字符串和切片
1 字符串可以用切片的形式访问
stra='wewae' str[6:]=''