第02天(函数、工程管理)_01

01_无参无返回值函数的使用.go

package main //必须

import "fmt"

func main() {
    //无参无返回值函数的调用: 函数名()
    MyFunc()
}

//无参无返回值函数的定义
func MyFunc() {
    a := 666
    fmt.Println("a = ", a)
}

02_普通参数列表.go

package main //必须

import "fmt"

//有参无返回值函数的定义, 普通参数列表
//定义函数时, 在函数名后面()定义的参数叫形参
//参数传递,只能由实参传递给形参,不能反过来, 单向传递
func MyFunc01(a int) {
    //a = 111
    fmt.Println("a = ", a)
}

func MyFunc02(a int, b int) {
    fmt.Printf("a = %d, b = %d\n", a, b)
}

func MyFunc03(a, b int) {
    fmt.Printf("a = %d, b = %d\n", a, b)
}

func MyFunc04(a int, b string, c float64) {
}

func MyFunc05(a, b string, c float64, d, e int) {
}

func MyFunc06(a string, b string, c float64, d int, e int) {
}

func main() {
    //有参无返回值函数调用:  函数名(所需参数)
    //调用函数传递的参数叫实参
    MyFunc01(666)

    MyFunc02(666, 777)
}

03_不定参数类型.go

package main //必须

import "fmt"

func MyFunc01(a int, b int) { //固定参数

}

//...int类型这样的类型, ...type不定参数类型
//注意:不定参数,一定(只能)放在形参中的最后一个参数
func MyFunc02(args ...int) { //传递的实参可以是0或多个
    fmt.Println("len(args) = ", len(args)) //获取用户传递参数的个数
    for i := 0; i < len(args); i++ {
        fmt.Printf("args[%d] = %d\n", i, args[i])
    }

    fmt.Println("==========================================")

    //返回2个值,第一个是下标,第二个是下标所对应的数
    for i, data := range args {
        fmt.Printf("args[%d] = %d\n", i, data)
    }

}

func main01() {
    //MyFunc01(666, 777)

    MyFunc02()
    fmt.Println("+++++++++++++++++++++++++++++++++++++++++++++++")
    MyFunc02(1)
    fmt.Println("+++++++++++++++++++++++++++++++++++++++++++++++")
    MyFunc02(1, 2, 3)
}

//固定参数一定要传参,不定参数根据需求传递
func MyFunc03(a int, args ...int) {
}

//注意:不定参数,一定(只能)放在形参中的最后一个参数
//func MyFunc04(args ...int, a int) {
//}

func main() {
    MyFunc03(111, 1, 2, 3)
}

04_不定参数传递.go

package main //必须

import "fmt"

func myfunc(tmp ...int) {
    for _, data := range tmp {
        fmt.Println("data = ", data)
    }
}

func myfunc2(tmp ...int) {
    for _, data := range tmp {
        fmt.Println("data = ", data)
    }
}

func test(args ...int) {
    //全部元素传递给myfunc
    //myfunc(args...)

    //只想把后2个参数传递给另外一个函数使用
    myfunc2(args[:2]...) //args[0]~args[2](不包括数字args[2]), 传递过去
    myfunc2(args[2:]...) //从args[2]开始(包括本身),把后面所有元素传递过去
}

func main() {
    test(1, 2, 3, 4)
}

05_一个返回值.go

package main //必须

import "fmt"

//无参有返回值:只有一个返回值
//有返回值的函数需要通过return中断函数,通过return返回
func myfunc01() int {
    return 666
}

//给返回值起一个变量名,go推荐写法
func myfunc02() (result int) {

    return 666
}

//给返回值起一个变量名,go推荐写法
//常用写法
func myfunc03() (result int) {

    result = 666
    return
}

func main() {
    //无参有返回值函数调用
    var a int
    a = myfunc01()
    fmt.Println("a = ", a)

    b := myfunc01()
    fmt.Println("b = ", b)

    c := myfunc03()
    fmt.Println("c = ", c)
}

你可能感兴趣的:(第02天(函数、工程管理)_01)