Go语言基础(二) | 青训营

70 阅读2分钟

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
	}()//加上()表示直接调用
}