美文网首页工作生活
Golang笔记: 函数(func)和方法(method)

Golang笔记: 函数(func)和方法(method)

作者: Boston199834 | 来源:发表于2019-07-16 08:59 被阅读0次

        函数是组织好的,可以重复利用的,用来实现单一或相关联功能的代码段,可以提高应用的模块性和代码的重复利用率。

函数声明(定义)

        函数的基本组成为:关键字(func),函数名,参数列表,返回值列表,函数体,返回语句。

        普通函数声明(定义)

            func  函数名  (形参列表)  (返回值列表) {

                    函数体

            }

        return 可以作为语句的结束退出,也带一个或多个作为返回值给调用者使用(函数在声明时,包含了返回值列表,那么函数必须以 return 语句结尾)

   函数的返回值

        Go语言支持多返回值,通常以返回值的最后一个返回参数返回执行中可能发生的错误。

        例:conn, err   := connectToNetWork()

        1:同一种类型的返回值

       如果返回值是同一种类型,则用括号将多个返回值类型括起来,return 返回时,返回值顺序与函数声明的返回类型顺序一致,示例代码如下

                func typedTowValues() (int, int) {

                        return  1,  2

                    }

            2:带有变量名的返回值

            Go语言支持对返回值进行命名,这样返回值就和参数一样拥有参数变量名和类型。

            下例中,可以直接对返回值列表中的a,b进行赋值,从而在 return中不填写返回值列表 

            func nameRetValue() (a,b int) {

                a = 1

                b = 2

                return 

                }

        调用函数

        返回值变量列表 =  函数名(参数列表)

函数值传递和引用传递 

        值传递:也就是传递参数的副本,函数接收参数副本之后,在使用变量的过程中只能对副本进行修改,但是不会影响到原来的值,如   func(arg1)

        引用传递:可以直接修改参数的值,而不是对参数副本进行操作,比如在变量名前加 & 符号传递给函数,就是按引用传递,此时传给函数的是一个指针,如 func(&arg1)

        引用传递消耗比值传递少,因此函数调用时,像slice,map,interface,channel类型都是使用引用传递(即使没有显示的指出指针)

函数变量 -- 将函数作为值保存到变量中

        Go语言中,函数也是一种类型,也可以和其他变量一样保存在变量中

        例:func fire() {

                    fmt,Println("fire")

            }

            func main() {

                var f func()    //声明未func()类型,此时 f 被俗称为 "回调函数" ,f 的值为nil

                f = fire            //将fire() 函数名作为值,赋给f变量, 此时 f的值为fire()函数

                f()                    // f 变量进行函数调用,实际上调用的是fire()函数

            }

匿名函数

        匿名函数是指不需要定义函数名的一种函数实现方式,即函数可以像普通变量一样传递或使用

        例:  func (参数列表) (返回值列表){

                函数体

        }

        1:在定义时调用匿名函数

     例如: func(data int) {

                    fmt.Println("this is go", data)

                } (100)   //表示对匿名函数进行调用

            2:将匿名函数赋值给变量

                f := func(data int) {  // 将匿名函数体保存到f()中

                        fmt.Println("hello", data)

                }

                    f(100)  // 使用f()调用

     


相关文章

  • Golang笔记: 函数(func)和方法(method)

    函数是组织好的,可以重复利用的,用来实现单一或相关联功能的代码段,可以提高应用的模块性和代码的重复利用率。 函...

  • Golang——函数func

    函数是执行特定公开、可复用的代码块,包括函数、匿名函数、闭包。可作为变量、返回值、参数等。 函数名:字母、数字、下...

  • Python getattr用法详解

    简而言之 func = getattr(函数,方法) = 函数.方法func(args) 说明 Python’s ...

  • swift 可选协议

    方法一 @objc @objc protocol ExampleProtocol { func method1(...

  • golang:method

    golang中方法是一个函数加上一个函数的接受者,接受者可以是值类型也可以是指针类型。关键字func和函数名之间的...

  • GO 学习笔记 (三) : method 和 interface

    为了面向对象(首先你得有个对象) method 定义一个method 使用 func ( 方法属于者 方法属于者类...

  • 详解Go 语言中的方法

    go 方法 定义 方法是具有特殊接收器参数的函数,即在 func 和方法名之间方法接收者。 func(sStude...

  • lodash 部分方法

    函数方法 _.after(n, func) before也类似。 _.ary(func, [n=func.leng...

  • Golang基础(七)——方法method

    Golang基础(七)——方法method @([07] golang)[Go总结] 可以对包内的任意类型定义任意...

  • Function object and Method objec

    Python: 函数与方法的区别 以及 Bound Method 和 Unbound Method - 技术栈大杂...

网友评论

    本文标题:Golang笔记: 函数(func)和方法(method)

    本文链接:https://www.haomeiwen.com/subject/aemwcctx.html