go☞005函数

阅读量: zyh 2020-10-04 20:01:44
Categories: > Tags:

前言

如果有参数,则需提供参数类型

如果有返回值,则需提供返回值类型

结构

func <func_name> (<args> args_type) <rtn_value_type> {
    ...
    return rtn_value
}

函数参数

函数参数是形参,调用函数并传递给函数的参数是实参,形参和实参类型要一致

函数参数(形参)仅在函数体内生效

在函数没有被调用的时候,函数参数(形参)不会分配内存单元

当函数参数(形参)接收了一个实参内存值的时候,函数体内的函数参数将和实参没有任何关联

当函数参数(形参)接收了一个实参内存地址的时候,函数体内的&函数参数将受到实参影响

参数个数

参数可以有多个,只需要在形参类型前添加...

package main

import "fmt"

func main(){
    print(1,2,3,4,5)
}

func print (a ...int) {
    for _,v := range a{
        fmt.Println(v)
    }
}

_ 表示接收无用的值

用例

package main

import "fmt"

func fcLen(yp *string) int {
    fmt.Printf("传递的形参是:%p,%s",yp, *yp) // %p标识指针变量
    return len(*yp)
}

func main(){
    a := "abc"
    b := fcLen(&a)
    fmt.Println(b)                                            
}

递归函数

递归函数在嵌套的时候,需要一个退出条件,从而防止死循环

例如

func jiecheng(i int)int {
    if i > 1 {
        result = i * jiecheng(i-1)
        return result
    }
    return 1
}

特殊函数

init() 包内的init()在包被引用的时候,会自动执行。另外引用包的时候,如果通过_ "package_name"引用,表示仅引用包里的init()函数

内置函数

make()用于chan、map以及切片创建

new()用于创建一个指向type内存地址的指针