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

    函数就是一块执行特定任务的代码,在输入源的基础上通过一些算法生成预期的输出。

    一、函数的声明

    Go 语言中的函数声明语法如下:

    func 函数名(参数名 类型,参数名 类型)(返回值1类型,返回值2类型){
    	函数体内容
    	return 返回值1,返回值2
    }
    

    注意:函数中的参数列表和返回值不是必须的

    二、函数的定义方式

    1、有参数无返回值

    func add(a int, b int) {
        fmt.Println(a + b)
    }
    

    2、有参数无返回值,有多个相同类型参数

    func add(a, b int) {
        fmt.Println(a + b)
    }
    

    3、有参数无返回值,有多个相同类型参数,也有不同类型

    func add(a, b int, msg string) {
       fmt.Println(a + b)
       fmt.Println(msg)
    }
    

    4、多个参数,一个返回值

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

    5、多个参数,多个返回值

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

    6、命名返回值

    func add(a, b int) (c int, d int) {
       c = a + b
       d = a * b
       return     // 这个时候不需要在写c,d了
    }
    

    7、函数返回值为函数(函数是一等公民,函数可以赋值给变量)

    func test() func() {
       return func() {
          fmt.Println("我是返回函数")
       }
    }
    

    8、函数返回值为函数,返回的函数带参数

    func test() func(msg string) {	// 类型只要有不一样的地方,就不是一个类型
    	return func(msg string) {
    		fmt.Println(msg)
    	}
    }
    

    9、函数返回值为函数,返回的函数带参数,带返回值

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

    10、函数参数为函数类型,返回值为带参数,带返回值的函数类型

    package main
    
    import "fmt"
    
    func main() {
       var c = f
       a,b := test(c)(3,4)
       fmt.Println(a, b)
    }
    
    func test(f func()) func(a, b int) (int, int) {
       return func(a, b int) (int, int) {
          f()
          return a + b, a * b
       }
    }
    
    func f()  {
       fmt.Println("我是函数参数")
    }
    

    11、闭包函数:定义在函数内部,对外部作用域有引用

    闭包函数就是多了一种函数传参的方法

    func test(age int) func()  {
       a := func() {
          fmt.Println(age)
       }
       return a		// a就是闭包函数
    }
    

    12、匿名函数(定义在函数内部的函数,不能是有名函数,头等函数)

    var a func()
    a = func (){
    	fmt.Println("我是匿名函数")
    }
    a()
    

    13、空白符( _ 在Go中被用作空白符,可以用来表示任何类型的任何值)

    package main
    
    import "fmt"
    
    func main() {
       _, b := test(3, 5)	
       fmt.Println(b)	// 返回 15
    }
    
    func test(a, b int) (int, int) {
       return a + b, a * b
    }
    
    学习之旅
  • 相关阅读:
    第四章 利用函数实现指定的功能
    5-7 点到原点的距离(多态)
    5-2 宠物的生长(多态)
    5-7 学生cpp成绩统计
    5-6 学生CPP成绩计算
    php将远程图片下载保存到本地
    vs2010 调试快捷键
    vs2010 快捷键大全
    [C#] 使用Application.AddMessageFilter当做Form的热键
    C# 收发和处理自定义的WINDOWS消息
  • 原文地址:https://www.cnblogs.com/XiaoYang-sir/p/15358880.html
Copyright © 2011-2022 走看看