GO语言基础语法
首先go是强类型语言,每一个变量都有自己的变量类型,常见的有:字符串,整数,浮点型,布尔类型,另外go中也有指针(只不过用法就是解引用和取地址)
go语言中字符串是内置类型,可通过加号直接拼接,也同时能用等于号比较俩个字符串
下面是变量声明及其定义
var name string // 声明
var name string = "name" //声明并赋初值
var name = "name" //自动推导类型为string
name := "name" //也可以省略var 和类型直接自动推导
分支结构 if - else :
if true{ // 花括号必须加
...
}else{ //else必须位于这里
}
// if - else if
if true{
...
}else if true{
...
}else{
...
}
switch-case
switch 中 可以放 变量,常量 ,字符串, case中也可以放表达式
switch v{
case 1 , 2 : // 可以并列 , 然后没有break
case 3:
default:
}
switch {
case retInt() == v: //表达式
...
case v == 2:
...
default:
...
}
循环结构
go 语言中只有一个for
for{ //类似 while(true)死循环
...
}
for i < 10{ //类似while(i < 10)
...
}
for i:=0; i < 10; i++{ //正常for循环,三个表达式也可以省略,但是分号得在昂
...
}
数组
var a[5] int //声明一个长度为5的int型数组
b := [5]int{1,2,3,4,5} //声明并定义
c := [...]int{1,2,3,4,5}//不想写括号里的5也可以写...来根据后面初始化的数量赋值
var twoD [2][3]int//二维数组
切片
go语言中一般很少用数组,用切片更方便一些,切片可以任意更改长度
s := make([]string, 3) //创建一个切片 初始长度为3
s[0] = "a"
s[1] = "b"
s[2] = "c"
s = append(s, "d") //数组不能用这个方法
fmt.Println(s) // [a b 3 d]
切片也可以这样声明:
var s []string
s = append(s, "a")
s = append(s, "b")
fmt.Println(s) // [a b]
函数
这个是 Golang 里面一个简单的实现两个变量相加的函数。 Golang 和其他很多语言不一样的是,变量类型是后置的。Golang 里面的函数原生支持返回多个值。在实际的业务逻辑代码里面几乎所有的函数都返回两个值,第一个是真正的返回结果,第二个值是一个错误信息。
func add(a int , b int) int ,err {//a int , b int == a , b int俩种方式都一样
return a + b //后面的是返回值
}
func add(a , b int)(int , error){ //可返回多个值
return a + b , nil
}
func Tmp(a , b int){
func() int {//还可以在函数内部定义一个匿名函数,类似别的语言lambda函数
return 5
}()//加上()表示直接调用
}