zoukankan      html  css  js  c++  java
  • Go语言函数

     

    函数定义

      函数定义格式:

        func function_name ([parameter list]) [return_types] {

          函数体

        }

      函数定义解析:

        func:函数由func开始声明;

        function_name: 函数的名称,函数名和参数列表共同构成了函数签名;

        parameter_list: 参数列表,参数就像一个占位符,当函数被调用时,你可以将值传递给参数,这个值被称做实际参数。参数列表指定的是参数的类型,顺序,个数。参数不是必须的;

        return_types: 返回类型,函数返回一系列的值。return_types是该列值的数据类型。如果函数不需要返回值,则不需要return_types;

        函数体: 函数定义的代码集合;

      实例:

    package main
    
    import "fmt"
    
    func main() {
    
            var b int = 15
            var a int = 39
            var total = num(a,b)
            fmt.Printf("两者之和为:%d",total);
    }
    func num(par1,par2 int) int{
            var num int
            num = par1 + par2
            return num
    }
    

    函数调用

      函数创建完成后,可以在main函数中调用,如上面的代码,给函数传递相应的参数并获得返回值即可。

      以上实例在 main() 函数中调用 num()函数,执行结果为:

    两者之和为:54
    

    函数返回多个值

      函数可以有多个返回值(函数的返回值和参数没有关系),但通常情况下都是有输入才有输出;

        实例:

    package main
    
    import "fmt"
    
    func main() {
    
            var a int = 39
            var b string = "test"
            var c,d = swap(a,b)
            fmt.Printf("d的值为: %d
    ",d);
            fmt.Printf("c的值为: %s",c);
    }
    
    func swap(a int,b string) (string,int){
            return b,a
    }
    

      返回结果:

    d的值为: 39
    c的值为: test
    

    函数参数

      和其他语言一样,go语言的参数分为:实参和形参,调用函数时参数传递类型分为:值传递和引用传递

    传递类型 描述
    值传递

    值传递是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,

    将不会影响到实际参数。

    引用传递

    引用传递是指在调用函数时将实际参数的地址传递到函数中,那么在函数中对参数所进行的修改,

    将影响到实际参数。

    函数用法

      函数作为值

        函数定义后可作为值来使用

          实例

    package main
    
    import (
            "fmt"
            "math"
    )
    
    func main() {
            /* 声明函数变量 */
            getSquareRoot := func(x float64) float64 {
                    return math.Sqrt(x)
            }
    
            /* 使用函数 */
            fmt.Println(getSquareRoot(13))
    }
    

        输出结果:

    3.605551275463989

      函数闭包

        闭包是匿名函数,可在动态编程中使用;Go语言支持匿名函数,可作为闭包。匿名函数时一个“内联”语句或者表达式。匿名函数的优越性在于可以直接使用函数内的变量,不用声明。

        实例

    package main
    
    import "fmt"
    
    func getSequence() func() int {
       i:=0
       return func() int {
          i+=1
         return i  
       }
    }
    
    func main(){
       /* nextNumber 为一个函数,函数 i 为 0 */
       nextNumber := getSequence()  
    
       /* 调用 nextNumber 函数,i 变量自增 1 并返回 */
       fmt.Println(nextNumber())
       fmt.Println(nextNumber())
       fmt.Println(nextNumber())
       
       /* 创建新的函数 nextNumber1,并查看结果 */
       nextNumber1 := getSequence()  
       fmt.Println(nextNumber1())
       fmt.Println(nextNumber1())
    }
    

      返回结果:

    1
    2
    3
    1
    2
    

      函数方法

        方法就是一个包含了接受者的函数,接受者可以是命名类型或者结构体类型的一个值或者是一个指针。所有给定类型的方法属于该类型的方法集。

        格式:

    func (variable_name variable_data_type) function_name() [return_type]{
       /* 函数体*/
    }

    variable_name:参数名称
    variable_data_type:参数类型

        实例

    package main
    
    import (
            "fmt"
    )
    
    type square struct {
    	sideLength float64
    }
    
    func (sl square) getArea() float64 {
    	return sl.sideLength * sl.sideLength
    }
    
    func main() {
    	var sl square
    	sl.sideLength = 3.5
    	fmt.Println("Area of square(sl) = ", sl.getArea())
    }
    

        输出结果为:

    Area of square(sl) =  12.25
    

      

    有罪是符合人性的,但长期坚持不改就是魔鬼。
  • 相关阅读:
    Java package和import
    2文本
    dotnet学习制表技巧
    视频教程:小型登陆系统(五)
    读书札记:ASP.NET网站管理工具遇到错误。请返回上一页并重试
    视频教程:小型登陆系统(三)
    视频教程:小型登陆系统(四)
    视频教程:小型登陆系统(二)
    视频教程:小型登陆系统(一)
    视频教程:小型登陆系统(完)
  • 原文地址:https://www.cnblogs.com/yu-yuan/p/9708023.html
Copyright © 2011-2022 走看看