go流程和函数
1.if else 条件判断:如果满足条件就做某事,否则做另一件事。
if (条件){
}else{
}
2.for循环控制
// 遍历集合
for _,v:=range data{
fmt.Println(v)
}
// 自增
for i=0;i++;i<10{
}
3.goto:用goto跳转到必须在当前函数内定义的标签,无条件跳转
func myFunc() {
i := 0
Here: //这行的第一个词,以冒号结束作为标签 println(i)
i++
goto Here //跳转到Here去
}
4.switch:条件判断 避免写很长的if-else
switch sExpr {
case expr1:
some instructions
case expr2:
some other instructions
case expr3:
some other instructions
default:
other code
}
sExpr和expr1、expr2、expr3的类型必须一致。Go的switch非常灵活,表达式不必是常量或整数,执行的过程从上至下,直到找到匹配项;而如果switch没有表达式,它会匹配true。使用fallthrough强制执行后面的case代码。
i := 10 switch i {
case 1:
fmt.Println("i is equal to 1")
case 2, 3, 4:
fmt.Println("i is equal to 2, 3 or 4")
case 10:
fmt.Println("i is equal to 10")
default:
fmt.Println("All I know is thati is an integer")
}
5.go的方法定义和其他语言类似,但是go支持多返回值
func funcName(input1 type1, input2 type2) (output1 type1, output2 type2) {
//这里是处理逻辑代码
//返回多个值
return value1, value2
}
可变参数:func myfunc(arg ...int) {} arg是一个int的slice
值传递和传指针
值传递:传递的是值的拷贝,形参值改变时不会改变原来实参的值
传指针:传递的是地址,实参和形参指向了同一块内存地址,形参值改变会改变实参值
defer:延迟(defer)语句
主要用来在程序返回前关闭资源、处理一些必要的事情。一个方法可以定义多个defer,先定义的后执行。
6.导入包 import
相对路径倒入:import “./model” //不建议使用
绝对路径倒入:import “shorturl/model” //加载gopath/src/shorturl/model模块
取别名:import(
f "fmt"
)
_操作:
import ( "database/sql"
_ "github.com/ziutek/mymysql/godrv"
)
_操作表示引入该包,而不直接使用包里面的函数,而是调用了该包里面的init函数