变量
var num int
var (//批量声明
num int
name string
isman bool
)
var num int = 10
var num = 10//类型推导
var a,b = 12,"abc"//一次性初始化多个变量
常量
常量的声明和变量声明非常类似,只是把var换成了const,常量在定义的时候必须赋值。
const name = "tjs"
const (
pi = 3.1415926
num = 10
)
const(
a1 = 100
a2
a3
)//a1,a2,a3值相同
数组
var names [3]string
names[0] = "zxcv"
//初始化
var names = [3]string{"xxx","yyy"}
var ages = [...]int{12,34,3}//数组长度自行推断
a := [...]string{1:"xxx",3:"bbb"}//使用指定索引值的方式来初始化数组
二维数组
var strs[2][4]string
a := [2][3]int{{1,2},
{3,4}}
a := [...][3] float32{{1.3,2.45,3.65},
{2.2,4.6,23.45}}
//注意: 多维数组只有第一层可以使用...来让编译器推导数组长度。
var nums = [2][3]int{{1,2,3},{1,1,1}}
切片
//第一种先声明,再通过make函数分配地址
var a []int
a = make([]int,10)
//第二种,声明的同时赋值,直接分配地址
var ages = []int{12,21,22,23}
var Is = []bool{false,true,true}
//使用短变量声明赋值初始化
a:= []int{1,2,3,4}
//使用 make函数+短变量声明 初始化切片
a := make([]string,2,10)
// 2为切片元素个数,10为切片容量。
map
先声明,再用make函数分配地址
map的初试化类似切片
var scorce map[int]string//0x0
scorce = make(map[int]string,10)//0xc000033f40
//10为容量
元素为map类型的切片
var mapslice = make([]map[int]string,10)
//第二种
var b []map[int]bool
b = make([]map[int]bool,10)
//第三种
mapslice := make([]map[int]string,10)
值为切片类型的map
var slicemap= make(map[string][]int,10)
指针
var a *int//a = 0x0
a = new(int)//*a = 0 a = 0xc000033f68
*a = 100//*a = 100
//第二种
a:= new(int) // a = 0xc000033f68 *a = 0
//第三种
//指针数组
var nums [3]*int
print(nums[0])//0x0
nums[0] = new(int)
println(*nums[0],nums[0])//0,0xc000033f68
//数组指针
var nums *[2]int
nums = new([2]int)
println(nums[0])//0
数组指针是一个指向数组的指针
指针数组是指一个数组中的每个元素都是指针
结构体
//声明-------------------------------------------------------------------------
type person struct{
age int
name string
isman bool
}
type Person struct{
age,height int
name,city string
}
//实例化-------------------------------------------------------------------------
var ZZ person
var Tjs = new(person)//指针类型结构体
uesr := &person{}//取结构体地址实例化
//使用&对结构体进行取地址操作相当于对该结构体类型进行了一次new实例化操作。
//初始化-------------------------------------------------------------------------
user := person{
age:18,name:"zz",isman:true
}
user := &person{
age:18,name:"zz",isman:true
}
user :=person{
age:19
}//当某些字段没有初始值的时候,该字段可以不写
user :=&person{
18,"xx",true
}
//必须初始化结构体的所有字段。
//初始值的填充顺序必须与字段在结构体中的声明顺序一致。
//该方式不能和键值初始化方式混用。