这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天
go语言1:
导包
用法:
1、import "package1/package2"
2、pktest.Func1() (包名.函数名)
对比java:相似
声明
例子:
var a int
var b float32 var c, d float64
e, f := 9, 10
var g = "Ricardo"
关键字:**var**
符号::= (直接赋值,无需定义类型)
匿名变量
_
用于填充,某函数func返回3个值,我只打印第2个就可以
_,v,_=func(); fmt.Println(v)
常量
在Golang的常量定义中,使用const关键字,并且不能使用:=
语法
判断
与java一样,只是省略了小括号
循环
只有for循环,也省略了小括号
函数
在Golang的函数定义中,所有的函数都以`func`开头,并且Golang命名推荐使用驼峰命名法。
注意,在Golang的函数中,如果首字母是小写,则只能在包内使用;如果首字母是大写,则可以在包外被引入使用。可以理解为,使用小写的函数,是`private`的,使用大写的函数,是`public`的。
例子:
func add(x int, y int) int {
return x + y
}
func main() {
fmt.Println(add(42, 13))
}
defer
defer 语句会将函数推迟到外层函数返回之后执行。 推迟调用的函数其参数会立即求值,但直到外层函数返回前该函数都不会被调用。
数组
与java相比,go的定义是相反的,但比java简洁
var a[5]int
b:=[5]int{1,2,3,4,5}
切片
java却不存在切片这一概念,java对于我更倾向于来用第三方工具库如lombok进行数组扩充等
切片不同于数组,可更改数组的长度,也有更多丰富的操作。
s:=make([]string,3)表示先创建一个长度为3的string类型数组
s[0]=0;s[1]=1;s[2]=2;
s=append(s,"a","b")
最后得到的s数组为{0 1 2 a b}
在打印时,可以fmt.Println(s[x:y])来获取s数组的从第x索引开始到y索引之前(不包括y)的数据