package main

import "fmt"

/*
函数 是go里面主要的封装方法 注意:defer 是go语言中新增的 其他语言应该没有
作用是被这个defer标记的函数会延迟执行  并且如果有多个defer标记 最后表的defer
最先执行
*/

// (name(传入参数) string(传入类型)) string 返回类型
func one(name string, age int) string {
    var name_str = fmt.Sprintf("姓名:%s,年龄:%d", name, age)
    return name_str
}

// 函数接收可变参数
func two(a ...int) int { //...接收可变参数类型为切片
    fmt.Printf("%T\n", a)
    return 1
}

// 当可变参数和固定参数都存在时 可变参数要放到固定参数的后面
func trr(a int, b ...int) {
    fmt.Printf("a:%d,b:%d\n", a, b)
}

// 函数多个返回值应该用()
func four(a int, b int, c int) (int, int, int) {
    fmt.Println(a, b, c)
    return c, b, a
}

// defer:延迟执行
func fuuod() {
    defer fmt.Println("我用的函数1") //加上defer 会最后执行
    defer fmt.Println("我用的函数2") //加上defer 会最后执行
    defer fmt.Println("我用的函数3") //加上defer 会最后执行  如果存在多个defer最后一个defer会最先执行
    fmt.Println("我是一个函数")
}

func main() {
    result := one("小明", 12)
    fmt.Println(result)
    //two()
    //trr(1, 2)
    //four(1, 2, 3)
    fuuod()
}
最后修改:2022 年 11 月 29 日 02 : 17 PM
感谢您的,打赏!