zoukankan      html  css  js  c++  java
  • 函数

    函数基础部分

    语法:func关键字 函数名(参数1 类型,参数2 类型) (返回值类型){ }{  }之间的代码,就是函数体。

    1.无参数,无返回值

    package main
    
    import "fmt"
    
    func test()  {
        fmt.Println("xxx")      # 表示这个函数不需要输入参数,且没有返回值
    }

    2.有两个int类型的参数

    package main
    
    import "fmt"
    
    func main() {
        test(a:1, b:2)    # 只需要输入1,2便会自动补全
    
    }
    
    func test(a int, b int) {
        fmt.Println(a + b)
    }

    3.有一个数字类型返回值,一定要指定返回值类型

    package main
    import "fmt" func main(){ c := test(1,2) fmt.Println(c) } // func test(a,b int) int { // return a+b func test(a,b int) string { return "laji" }

    4.返回多个值

    package main
    import "fmt" func main(){ //a,b := test(1,2) // 有两个返回值 //fmt.Println(a,b) a,_ := test(2,2) // 不要第二个返回值 ,'_'在python中是个变量,在go中表示空 fmt.Println(a) } func test(a,b int) (int, string) { return a+b, "成功" }

    5.在go中没有位置参数和关键字参数,都是位置参数,也没有默认参数

    package main
    import "fmt" func main(){ c := test(2,3) fmt.Println(c) } func test(a,b int) int { return a+b }

    6.不定长参数

    package main
    import "fmt" func main(){ fmt.Println(1,2,3,4,5,6) } func test(a interface{}) { fmt.Println(a) }

     函数高级部分

    1.内层函数

      内层函数:定义在函数内部的函数。go中函数内部定义的函数是不能有名的,需要定义匿名函数:没有名字

    package main
    import "fmt" func main() { test(1) } func test(a int) { func() { fmt.Println("我是内层函数") }() }

    2.闭包函数

      定义:在函数内部,对外部作用有引用。

    package main
    import "fmt" func test(a int) (func()){ b := func() { fmt.Println(a) fmt.Println("我是闭包函数") } return b }
    func main() { c :
    = test(3) // 加括号,是为了不直接return返回 b c() }

    3.定义一个函数,传入函数,返回函数

    package main
    import "fmt" func test(a func()) func() { b := func(){ fmt.Println("我先执行") a() fmt.Println("函数执行完") } return b } func test2() { fmt.Println("hello") } func main() { a := test2 a = test(a) a() }

     4.给类型命别名

    package main
    import "fmt" type MyFunc func(a int,b int) func() type MyInt int func test() MyFunc { c:= func(a int,b int) func(){ return func() { } } return c } func main() { var a MyInt = 10 fmt.Println(a) }
  • 相关阅读:
    Django REST framework+Vue 打造生鲜电商项目(笔记三)
    「数据结构与算法之链表(Python)」(四)
    微服务的注册中心
    git学习(十一) idea git pull 解决冲突
    git学习(十) idea git reset 操作
    git学习(九) idea git stash操作
    git学习(八) git stash操作
    git 学习笔记
    git学习(五) git diff操作
    git:Your branch and 'origin/master' have diverged
  • 原文地址:https://www.cnblogs.com/blue-tea/p/12013866.html
Copyright © 2011-2022 走看看