大部分资料来自于这里
关于变量
声明方式1
2
3
4
5
6
7var a int = 1
var b, c int = 2, 3
d, e := 4, 5
var (
f = 6
g int = 7
)
关于常量
对于没有设定类型的常量,是没有类型的
比如说const i = 1
可以有var a int = i
或者var b int8=i
在需要的地方它才会转化类型,就像是字面常量一样
关于函数
函数可以有多个输出(此时需要用括号括起来),下划线_
可用来抛弃一些函数的返回值1
2
3
4
5
6
7func f(a,b int)(c,d int){
c=a
d=b
return
}
_,c = f(1,3)
此时c为3
1 |
|
进行包的初始化,init()
函数会在包内变量初始化完毕后执行
一个包可以有多个init()
,不管是在同一个文件内还是放在包内的不同文件中
即使被import多次,init()
也只会执行一次,
可以在包前面加入下划线,代表我们需要这个包的init()
,但是不一定在代码里用上这个包1
import _ "github.com/go-sql-driver/mysql"
用下划线_
赋值包内函数或变量,则可以在开发时暂时禁用未使用包的错误,等真的使用的时候再删除
关于if
else和花括号必须在同一行,除非你用了分号1
2
3
4
5if {
//do something
}else{
//do something
}
或1
2
3
4
5
6if {
//do something
};
else{
//do something
}
if内可以塞语句,语句会在条件判断前执行1
2
3if x:=10;x>=10{
//do something
}
关于循环
for 内可以只塞条件,类似其他语言的while一样使用
没有条件代表无限循环
1 | for x==1 { |
关于switch
switch内可以塞语句,语句会在条件判断前执行
case中会自动在结尾加上break(对于不想自动添加break的,可以在那一段case内末尾加入fallthrough关键字)1
2
3
4
5
6
7switch x:=1; x{
case 1,2,3:
//x is 1 or 2 or 3
fallthrough
default:
//do something
}
显式下厨break也不会报错,但是只会跳出switch判断,如1
2
3
4
5
6
7x:=1
for{
switch x{
case:1
break
}
}
只会跳出break而不是for,依旧会无限循环下去
要跳出for,可以这样1
2
3
4
5
6
7x:=1
myloop: for{
switch x{
case 1:
break myloop
}
}
case条件 不一定 是常量,switch为空的时候,匹配条件为true的1
2
3
4
5
6switch {
case x<2:
//x is less than 2
case x<3:
//x is in range [2,3)
}