Go语言基础语法总结
一 变量
-
变量定义
-
1.1 使用var关键字
var a bool
var a bool = true
1.2 不指定类型直接初始化让编译器选择
var a = "abc"
1.3 使用 “ := "定义变量,可省略var关键字,如 a:="abc"
- notes:
变量赋值只能在函数内使用,故第三种方式只能在函数内使用
可使用var()同时定义多个变量
Go的类型在变量名之后
-
二 内置基本类型
-
基本类型:
bool
数字类型:int, uint, uintptr, float32, float64, complex64, complex128, rune(相当于char)
类型转换:Go不会自动转换类型,当类型不同时需要手动进行强制类型转换
三 常量
定义:const ,常量名无需大写,Go中大写表示public ,例:const a = "acb"
const + 数值,例如const a = 0 ,a可以与int、float类型的数据直接运算而无需强制类型转换
-
枚举类型:(目前使用的不多,之后再补充)
普通枚举类型
自增值枚举类型
四 条件语句
-
switch
不需要break
使用fallthrough关键字会无条件执行下一条语句
switch后可以没有语句或跟多个语句
-
if
条件语句不需要括号
可以在条件语句中定义变量并赋值,不同语句间用;隔开
在条件语句中定义的变量作用域只在if语句中
五 循环语句
-
for
不加条件 -> 死循环
不加初始条件 -> 相当于while循环 (故Go中没有while循环)
for经常配合range使用
六 函数
定义: func func_name(parm ) return_type{}
Go中函数可返回多个值,并可以对多个值进行命名。实际应用中一般返回一个值和一个提示信息(fmt.Error())
默认为值传递
可变参数列表:在类型前使用” ...“ 表示可变参数列表,如(...int)
-
高级应用:
函数作为值:函数定义后作为值使用
闭包:匿名函数,在动态编程中使用
七 指针
- Go中的指针较C的指针更为简单,指针不能进行运算
八 内置容器
-
数组
数组是值类型,传参会拷贝数组
若需要改变数组的值,则参数需为数组的指针
-
切片(slice)
slice是数组的抽象,指向原数组的地址,改变slice中的值会改变数组的值,函数传参使用slice可以避免使用数组指针
len与capacity: len是数组的长度;capacity是数组的容量
索引不可以超过len;
每次cap改变的时候指向array内存的指针都在变化。当在使用 append 的时候,如果 cap==len 了这个时候就会新开辟一块更大内存,然后把之前的数据复制过去。
-
Map
接收时可以接收第二个参数判断key是否存在
除了slice, map, func外所有自建类型都可以作为key
struct不包含上诉类型也可以作为key
字符串(待补充)
- 仅记录了自己不太熟悉的特性,欢迎补充 *
更多Go的相关文章发布在我的个人博客上,欢迎访问
www.guiguiyo.cn