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
网友评论