zoukankan      html  css  js  c++  java
  • Go基础及语法(三)

    函数

    函数的定义

    package main
    
    import "fmt"
    
    /*
    func 函数名(参数1 类型1,参数2 类型2) 返回值类型 {
    	函数体
    }
    */
    func add(a, b int) int {
    	return a + b
    }
    
    func main() {
    	a := add(1, 2)
    	fmt.Println(a) //3
    }
    
    

    函数进阶

    高阶函数

    package main
    
    import "fmt"
    
    func add(a, b int) int {
    	return a + b
    }
    
    func sub(a, b int) int {
    	return a - b
    }
    
    func maths(a func(int, int) int, b, c int) int {
    	return a(b, c)
    }
    
    func call() func(int, int) int {
    	return func(a, b int) int {
    		return a + b
    	}
    }
    
    func main() {
    	a := maths(add, 1, 2)
    	b := maths(sub, 1, 2)
    	ret := call()
    	fmt.Println(a, b, ret(3, 4)) //3 -1 7
    }
    
    

    闭包

    package main
    
    import "fmt"
    
    func add(a, b int) {
    	fmt.Println(a + b)
    }
    
    func closure(f func(a, b int), a, b int) func() {
    	return func() {
    		f(a, b)
    	}
    }
    
    func f(fn func()) {
    	fn()
    }
    
    func main() {
    	a := closure(add, 1, 2)
    	f(a)
    }
    
    
    defer延迟调用
    package main
    
    import "fmt"
    
    func add(a, b int) {
    	fmt.Println(a + b)
    }
    
    func main() {
    	defer add(1, 2) //先打印7后打印3
    	add(3, 4)
    }
    
    

    内置函数panic和recover

    package main
    
    import "fmt"
    
    func f_1() {
    	defer func() {
    		err := recover() //recover记录错误,跳出函数,程序不停止,继续运行
    		fmt.Println(err) //打印runtime error: integer divide by zero
    	}()
    	a := 1
    	b := 0
    	fmt.Println("f1") //打印f1
    	fmt.Println(a / b) //异常
    	fmt.Println("f2") //不会打印f2
    }
    
    func f_2() {
    	panic("抛出异常") // panic抛出异常,程序会终止
    	fmt.Println("f3") //不会被打印f3
    }
    
    func main() {
    	f_1()
    	f_2()
    }
    
    
  • 相关阅读:
    XML 读取器和编写器从URL读取XML
    8月8号 星期五
    080808 晴
    080805
    雨景
    用photoshop批量修改照片(待修改)
    8月7日 晴
    五不
    Android 画渐变的背景
    iOS开发的一些基础知识
  • 原文地址:https://www.cnblogs.com/bgr1115/p/14296732.html
Copyright © 2011-2022 走看看