一 ,变量:变量赋值只能在函数内使用,故第三种方式只能在函数内使用,可使用var()同时定义多个变量变量定义 使用var关键字
var a bool var a bool = true
不指定类型直接初始化让编译器选择 var a = "abc"
使用 “ := "定义变量,可省略var关键字,如 a:="abc"
二 ,判断
1,switch和case判断
switch [变量名]
{
case 条件1:
处理逻辑
case 条件2:
处理逻辑
default:
处理逻辑
}
2,if判断
if 条件{
处理逻辑
}else{
处理逻辑
}
三, 常量
定义:const ,常量名无需大写,Go中大写表示public ,例:const a = "acb"
const + 数值,例如const a = 0 ,a可以与int、float类型的数据直接运算而无需强制类型转换
枚举类型:(目前使用的不多,之后再补充)
普通枚举类型,自增值枚举类型
四 ,条件语句
switch
不需要break
使用fallthrough关键字会无条件执行下一条语句
switch后可以没有语句或跟多个语句
if
条件语句不需要括号
可以在条件语句中定义变量并赋值,不同语句间用;隔开
在条件语句中定义的变量作用域只在if语句中
五 循环语句
六, 函数
定义: func func_name(parm ) return_type{}
go中函数可返回多个值,并可以对多个值进行命名。实际应用中一般返回一个值和一个提示信息(fmt.Error())
定义函数:
在go语言中没有class关键字,没有类的概念,go主要是面向函数和面向接口的编程语言。
语法:[ ]里面的内容为可选项
func 函数名([参数名] [参数类型]) [函数返回值类型]
{
函数具体逻辑
[return] [返回的内容]
}
七 ,指针
一种是类型指针,允许对这个指针类型的数据进行修改。 传递数据使用使用指针,而无须拷贝数据 类型指针不能进行偏移和运算;另一种是切片, 由指向起始元素的原始指针、元素数量和容量组成
2,从指针获取指针指向的值,
1,对变量“&”取地址操作后获得这个变量的指针,对指针使用“*”操作,就是指针取值
八 ,切片(slice)
slice是数组的抽象,指向原数组的地址,改变slice中的值会改变数组的值,函数传参使用slice可以避免使用数组指针
len与capacity: len是数组的长度;capacity是数组的容量
索引不可以超过len;
每次cap改变的时候指向array内存的指针都在变化。当在使用 append 的时候,如果 cap==len 了这个时候就会新开辟一块更大内存,然后把之前的数据复制过去。
- t := make([]int, 5)
-
- t[0] = 1
-
- t[1] = 2
-
- t[3] = 3
-
- fmt.Println(t)
-
- //[1 2 0 3 0]
-
- str1 := "hello world"
-
- fmt.Println(str1[6:])
九,Map接收时可以接收第二个参数判断key是否存在,除了slice, map, func外所有自建类型都可以作为key,struct不包含上诉类型也可以作为key
b := make(map[string]string)
c := make(map[string]int)
定义两个map,分别是b,c make是开辟内存空间,map关键字,[]里面是key类型,string和int都是value类型