package main
import "fmt"
func main(){
//变量定义
var v1 int
var v2 string
var v3 [10] int //数组
var v4 [] int //数组切片
var v5 struct{
f int
}
var v6 *int //指针
var v7 map[string] int //key 为string value为int的map
var v8 func (a int) int
//变量初始化
var var1 int = 10
var var2 = 10
var var3 := 10
fmt.Println("变量初始化")
fmt.Printf("var1=%d, var2=%d, var3=%d\n", var1, var2, var3)
}
常量定义
const 使用iota 可以模拟enum
iota 在每一个const出现时被重置为0,然后下一个const出现之前,每出现一次iota,其所代表的数字会自增1
const( //iota 被重置为0
c0 = iota //c0 == 0
c1 = iota //c1 == 1
c2 = iota //c2 == 2
)
模拟enum
const(
Sunday = iota
Monday
Tuesday
Wenesday
Thursday
Friday
Saturday
numberOfDays
)
数组及切片类似于C++的Vector容器
数组定义:
[32] byte //长度为32的数组,每个元素为一个字节
[2*N] struct {x, y int32} //复杂类型数组
[1000] *float64 //指针数组
[3][5] int //二维数组 3行5列
[2][2][2] float64 //等同于[2]([2]([2] float64))
获取数组长度使用 len()
arrLength := len(arr)
遍历数组方式
for i := 0; i < len(arr); i++{
fmt.PrintIn("Element", i, "of array is ", array[i])
}
for i, v := range array{
fmt.Println("Array element[", i, "] = ", v);
}
数组切片
基本数组创建切片
var myArray [10]int = [10]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
var mySlice []int = myArray[:5] //基于数组的前5个元素创建切片
append(mySlice, 1, 2,3) //动态添加数据
mySlice2 := []int{8, 9, 10} //直接通过数组创建切片
mySlice = append(mySlice, mySlice2...) //把一个slice追加到另一个slice等价于下面的操作
mySlice = append(mySlice, 8, 9, 10)
基于数组切片创建数组切片
oldSlice := []int{1, 2, 3, 4, 5}
newSlice := oldSlice[:3] //基本oldSlice的前3个元素构建新数组切片
map基本使用
map定义 var map[string] int
struct person {
var name string
var age int
}
//声明
var myMap = map[string] person
//创建
myMap = make(map[string] person)
//赋值
myMap['1234'] = person{'name', 22}
//创建并初始化
myMap = make(map[string] person{'name1', 23})