• 函数


    Go里面有三种类型的函数
    普通带有名字的函数
    匿名函数或者lambda函数
    方法

    main()、init()函数没有参数和返回值。
    参数、返回值被统称为函数签名。
    大括号必须这样
    func g() {
    }
    函数重载在Go内不被允许。
    如果需要声明一个在外部被定义的函数,只需要给出函数名和函数签名,不需要给出函数体。

    定义一个自定义函数类型
    type binOp func(int, int) int
    函数是一等值
    add := addnum
    add(1,15)
    函数值进行比较时,引用的是相同函数或者都为nil,则为true。

    命名返回值
    func kkk() (a int)
    return

    return 的时候会把a直接返回,a在函数调用的时候就已经定义了。

    空白符_ 接受一个返回值,但是不使用,直接扔了。
    传递变长参数
    myFunc( num ...int)
    实际上就是一个数组
    muFunc(1,2,3,4)(调用)

    nums := []int{1,2,3,4,5}
    muFunc(nums...)//传入一个列表(数组),变长参数

    defer
    在函数return执行。
    defer my(a,b)

    如果一个函数内有多个defer,则根据定义顺序反序执行,因为它用的是一个栈。。。
    defer后的函数常常是对文件的处理,流的关闭等等

    内置函数:

    Go 语言拥有一些不需要进行导入操作就可以使用的内置函数。它们有时可以针对不同的类型进行操作,例如:len、cap 和 append,或必须用于系统级的操作,例如:panic。因此,它们需要直接获得编译器的支持。
    以下是一个简单的列表,我们会在后面的章节中对它们进行逐个深入的讲解。
    名称 说明
    close 用于管道通信
    len、cap len 用于返回某个类型的长度或数量(字符串、数组、切片、map 和管道);cap 是容量的意思,用于返回某个类型的最大容量(只能用于切片和 map)
    new、make new 和 make 均是用于分配内存:new 用于值类型和用户定义的类型,如自定义结构,make 用于内置引用类型(切片、map 和管道)。它们的用法就像是函数,但是将类型作为参数:new(type)、make(type)。new(T) 分配类型 T 的零值并返回其地址,也就是指向类型 T 的指针(详见第 10.1 节)。它也可以被用于基本类型:v := new(int) 。make(T) 返回类型 T 的初始化之后的值,因此它比 new 进行更多的工作(详见第 7.2.3/4 节、第 8.1.1 节和第 14.2.1 节)new() 是一个函数,不要忘记它的
    copy、append 用于复制和连接切片
    panic、recover 两者均用于错误处理机制
    print、println 底层打印函数(详见第 4.2 节),在部署环境中建议使用 fmt 包
    complex、real imag 用于创建和操作复数(详见第 4.5.2.2 节)

    递归函数:
    函数自身调用自身,
    也可以是多个函数彼此调用,形成递归,A调用B,B调用A,在某一条件下跳出。


    函数作为参数传入
    func add(a int,b int)(num int)
    k := add
    myfunc(1,211,k)或者是myfunc(a,211,add)

    闭包(匿名函数):

    函数返回时 return func(参数列表)(返回值列表){函数体}

    闭包可以使用定义它的函数内的局部变量。且,可以看作就是它的变量。
    而且,在外部函数退出之后依旧可以使用,(cp了吧)

  • 相关阅读:
    会议管理要素
    项目管理—沟通管理
    项目管理的五大过程组和十大知识领域
    fastjson $ref引用问题
    项目管理——问题解决方法
    windows服务器添加磁盘后,提示The disk is offline because of policy set by an administrator的解决办法
    关于bat/cmd中转义符的使用
    关于bat中日期时间字符串的格式化
    关于windows服务器的Security安全类日志的导出
    关于windows服务器创建一个ps1脚本的周期性定时任务
  • 原文地址:https://www.cnblogs.com/mcmx/p/11380562.html
Copyright © 2020-2023  润新知