go基本语法
变量
基本类型
bool
默认falseint
以及int8
、int32
等string
用双引号或反引号括起来。反引号括起来的为raw字符串,即自动转义换行等字符error
错误类型
定义变量
var
开头,后跟变量名,再跟类型:var a int
var a,b,c int
var a int = b
var a,b,c int = x,y,z
- 如果定义以后赋值可以体现类型,则可以不写类型:
var a=1
var a,b = x,y
- 此时也可以省略
var
:a:=1
a,b := x,y
(次形式仅限用于函数体) - 特殊变量
_
。赋值给_
的值会被丢弃。如_,a := 1,2
会把2赋给a,同时1被丢弃 - 声明未使用的变量会编译报错
iota
作用域内每使用一次会自增,同一行使用时值相同
数组
- 定义:
arr:=[]int{}
,arr:=[10]int{1,2}
,arr:=[...]int{1,2,3}
- 获取长度:
len(arr)
- 多维数组
arr:=[...][...]int{[...]int{1},[1]int{2}}
slice
数组切片;引用类型,同一数组的slice指向同一数组;
1. 定义:var s []int
(不指定长度)
1. arr:=[...]int{1,2,3}
表示数组s:=arr[0:2]
表示从在数组arr从0到2的切片
1. s:=arr[:2]
从0到2
1. s:=arr[1:]
从1到len(arr)
map
无序;引用类型;
1. 定义:var m map[string]int
或m:=make(map[string]int)
1. 初始化:m:=map[String]int{"a":1,"b":2}
1. 赋值:m["key"]=1
struct
struct的组合即为面向对象中的类
1. struct组合
1. 匿名字段
1. 组合struct同名字段:优先访问外层
自定义类型
type Pair map[string]int
自定义一个类型
常量
const a = 1
语句
- 选择
if
- 循环
for
函数(面向过程的函数)
定义函数
第一行 以func
开头,后跟函数名,然后小括号内参数列表,以{
结尾,然后是函数体,最后以}
结束。
函数返回值
如果需要有返回值,则在参数列表后跟小括号,括号内写返回值类型
func get()(a int,b int){
a=1
b=2
return
// 同return 1,2
}
变长参数
func get(arg ...