go流程控制与函数

package main;

import (
    "fmt"
);

func main() {
    isRun := true;

    //条件判断
    if isRun {
        fmt.Printf("run
");
    } else {
        fmt.Printf("not run
");
    }

    //多条件判断
    a := 15;
    if a > 0 && a < 10 {
        fmt.Printf("0-10
");
    } else if a > 10 && a < 20 {
        fmt.Printf("10-20
");
    } else if a > 20 {
        fmt.Printf(">20
");
    }

    //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);
    }
}

  

原文地址:https://www.cnblogs.com/jkko123/p/6768988.html