咱们接着上回看
指针
基本介绍
- 获取变量的地址,用&,var num int ,&num 是取num地址的值
- 获取指针类型所指的值,使用*,var prt int,使用prt获取prt指向的值
- 案例来咯
var num int = 10
var ptr *int
prt = &num
*prt = 15
fmt.println("num=",num)
//num=15
值类型和引用类型
值类型和引用类型的说明
- 值类型:基本数据类型 int系列,float系列,bool,string,数组和结构体
- 引用类型:指针,slice切片,map,管道chan等
值类型和引用类型的使用特点
- 值类型:变量直接储存值,内存通常在栈中分配
- 引用类型:变量存储的是一个地址,这个地址对应的空间才是存储的值,如果地址内没有东西分配,会被当垃圾由GC回收。
标识符的命名规范
命名规则
- 由26个字母,0-9和_组成
- 数字不能开头
- 大写可以被其他包调用,小写则不能(全局变量)即大写是共有的,小写是私有的
- 不能含有空格
- 不能以系统保留关键字作为标识符
数组
数组定义
var 数组名 [数组大小]数据类型
var a [5]int
数组的遍历
- 常规遍历
var a [5]int=[5]int{0,1,2,3,4}
for i:=0;i<len();i++{
fmt.Printf("%v",a[i])
}
- 用for range 遍历
var a [5]int=[5]int{0,1,2,3,4}
for index,value:=range a{
fmt.Printf("%v,%v",index,value)
}
- 数组创建后,不赋值,有默认值 数值类型默认值:0 字符串默认值:“” bool数组:默认值为false
- 数组的下标是从0开始的
案例
生成随机五个数放入数组中,并找出最大值的下标
var intArr[5]int
var Maxval int = 0
var Maxin int = 0
rand.seed(time.Now().UnixNano())
for i:=0;i<len(intArr);i++{
intArr[i]=rand.Intn(100)
}
for i:=0;i<len(intArr);i++{
if Maxval>intArr[i]{
Maxval=intArr[i]
Maxin =i
}
}
fmt.Printf("最大值是%v,下标为%V",Maxval,Maxin)
- 数组的长度是固定的,不能动态变化。