go流程控制与函数

时间:2023-03-09 23:38:58
go流程控制与函数
package main;

import (
"fmt"
); func main() {
isRun := true; //条件判断
if isRun {
fmt.Printf("run\n");
} else {
fmt.Printf("not run\n");
} //多条件判断
a := 15;
if a > 0 && a < 10 {
fmt.Printf("0-10\n");
} else if a > 10 && a < 20 {
fmt.Printf("10-20\n");
} else if a > 20 {
fmt.Printf(">20\n");
} //goto跳转当前函数内定义的标签
b := 10;
TEST:
if b != 0 {
fmt.Println(b);
b--;
goto TEST;
} //for循环
sum := 0;
for i := 0; i < 100; i++ {
sum += i;
}
fmt.Println(sum); //for配合range读取map和slice中数据
var s = []int{1, 2, 3, 4, 5};
for k, v := range s {
fmt.Println(k, v);
} m := make(map[string]string);
m["name"] = "xiaoxu";
m["age"] = "27";
m["sex"] = "男";
for k, v := range m {
fmt.Println(k, v);
} //switch分支判断
//Go里面switch默认每个case最后带有break
//可以使用fallthrough强制执行后面的case代码
var code int = 2;
switch code {
case 1 : fmt.Println(1);
case 2 : fmt.Println(2);
case 3 : fmt.Println(3);
case 4 : fmt.Println(4);
default: fmt.Println(0);
} //调用函数
fmt.Println(sum2(10, 20));
//调用返回多个值的函数
su, minus := sumAndMinus(10, 20);
fmt.Println(su, minus);
//调用变参函数
prints(5, 4, 3, 2, 1); //调用传值函数
num := 10;
add1(num);
fmt.Println(num);
//调用传指针函数,这里num的值也跟着改变了
add2(&num);
fmt.Println(num); //调用defer
testDefer();
} //声明一个函数,返回类型int
func sum2(num1 int, num2 int) int {
return num1 + num2;
} //函数返回多个值
func sumAndMinus(num1 int, num2 int) (int, int) {
return num1 + num2, num1 - num2;
} //变参函数
func prints(arg ...int) {
//arg是一个slice
for _, v := range arg {
fmt.Println(v);
}
} //传值函数
func add1(n int) int {
n++;
return n;
} //传指针
func add2(n *int) int {
(*n)++;
return (*n);
} //defer延迟语句,当函数执行到最后时,这些defer语句会按照逆序执行,最后该函数返回。
func testDefer() {
for i := 0; i < 5; i++ {
defer fmt.Print(i);
}
}