zoukankan      html  css  js  c++  java
  • go基础_函数

    函数的基本写法

    func add(a int, b int) int {
    	return a + b
    }
    

    如果2个参数的类型一样,可以简写为

    func add(a, b int) int {
    	return a + b
    }
    

      

     多个返回值

    func add_substract(a int, b int) (int, int) {
    	return a + b, a - b
    }
    

      

    忽略多个返回值中的某一个

    func add_substract(a, b int) (int, int) {
    	return a + b, a - b
    }
    
    n1, _ := add_substract(3, 4)
    

      

    定义函数类型

    func add(a int, b int) int {
    	return a + b
    }
    
    func sub(a, b int) int {
    	return a - b
    }
    
    type Cal func(int, int) int
    
    func do(f Cal, a, b int) int {
    	return f(a, b)
    }
    
    func main() {
    n1 := do(add, 3, 5) n2 := do(sub, 5, 3)
    fmt.Println("n1 =", n1) fmt.Println("n2 =", n2) }

      

    不定参数的场景

    不定参数函数的形参可以为不定参数,或者为切片。

    但是这是2种不同的函数类型。

    func get_sum(data ...int) {
    	sum := 0
    	for _, v := range data {
    		sum += v
    	}
    	fmt.Println(sum)
    	return
    }
    
    func main() {
    	fmt.Println("Hello World!")
    
    	get_sum(1, 2, 3)
    	slice := make([]int, 3)
    	slice[0] = 1
    	slice[1] = 2
    	get_sum(slice...)
    }
    

      

    运行结果

    Hello World!
    6
    3
    成功: 进程退出代码 0.
    

      

    defer函数

    defer函数的主要作用为了保证资源的回收和释放。

    当defer函数放在return之后时,不会被执行。

    当defer函数所在的程序调用了os.Exit(),不管是Exit(0),Exit(1),defer都不会被执行。

    defer函数后面的()里面是为了放实参的。

    func main() {
    	fmt.Println("Hello World!")
    
    	defer func(x int) {
    		fmt.Println("defer x=", x)
    	}(1)
    
    	fmt.Println("test end")
    
    	//	os.Exit(0)
    	os.Exit(1)
    }
    

      

    运行结果

    Hello World!
    test end
    exit status 1
    错误: 进程退出代码 1.
    

      

    多个defer函数放在一起,最后的defer先执行。(defer充分贯彻落实FILO)

    大道至简
  • 相关阅读:
    Exploratory Undersampling for Class-Imbalance Learning
    Dynamic Programming
    Learning in Two-Player Matrix Games
    IELTS
    A Brief Review of Supervised Learning
    测试下载
    [.net基础]访问修饰符
    [随记][asp.net基础]Page_Load和OnLoad
    第一份工作经历
    JForum2.1.9 安装过程
  • 原文地址:https://www.cnblogs.com/liurong07/p/10577878.html
Copyright © 2011-2022 走看看