zoukankan      html  css  js  c++  java
  • go:函数

    1.声明语法
    	func 函数名 (参数列表) (返回值) {
    		pass
    	}
    	1.func add() {
    		pass
    	}
    	2.func add(a int, b int) (int,int) {
    		pass
    	}
    	3.func add(a,b int,args...) int {
    		pass
    	}
         4.匿名函数

          func() {       fmt.Printf("func 1 ")       }()       func(x int) {       fmt.Printf("func 2, x is %d ", x)       }(2)       a := func(a,b int) int {        return a+b       }(10,20)
    	5.函数可以作为变量赋值/作为参数传入
    		1)作为变量赋值
    		func add(a,b int) int {
    			return a + b
    		}
    		func main() {
    			c := add
    			sum := c(10,20)
    			fmt.Println(sum) // 30
    		}
    		2)作为参数传入
    		type add_func func(int , int) int //定义一种类型。add_func类型 参数两个int变量返回值为int
    		func add(a,b int) int {
    			return a + b
    		}
    		func operate(op add_func,a int, b int ) int {
    			return op(a+b)
    		}
    		func main(){
    			c := add
    			sum := operate(c,100,200)
    			fmt.Println(sum) //300
    		}
    2.参数传递方式
    	1)值传递
    	2)引用传递 //值所在内存的地址
    	注意:
    		无论是值传递还是引用传递,传递给函数的都是变量的副本(也就是深copy一份传递过去)。不过,值传递是值的拷贝,引用传递是地址的拷贝。
    		map、slice、chan、指针、interface默认为引用的方式传递
    3.命名返回值的名字:
    	package main
    
    	import "fmt"
    
    	func calc(a, b int) (sum int, sub int) {
    		sum = a + b
    		sub = a - b
    		return
    	}
    	func main() {
    		_, sum := calc(100, 200)
    		fmt.Println("sum=", sum)
    	}
    4.defer用途
    	1)当函数返回时,执行defer语句。
    	2)多个defer语句,按先进后出执行(实际是将defer语句的参数和资源压栈,函数结束时根据出栈顺序执行)
    	3)defer语句的变量,在defer声明时就决定了
    		package main
    
    		import "fmt"
    
    		func main() {
    			i := 0
    			defer fmt.Println(i) //0
    			i = 10
    			fmt.Println(i) //10
    			/*
    				10
    				0
    			*/
    		}
    	
    

      

  • 相关阅读:
    vue移动端适配
    vue根据状态改变文字颜色
    vue使用富文本插件
    小程序echart使用
    小程序日历状态圆点
    echars属性详解
    小程序vant文档地址
    vue根据不同文字切换显示不同颜色
    小程序获取用户手机号码
    小程序图片上传
  • 原文地址:https://www.cnblogs.com/kakawith/p/12573655.html
Copyright © 2011-2022 走看看