一、函数语法

func 函数名(形参列表) (返回值列表){

......

return 返回值

}

例如:

  1. package main
  2. import "fmt"
  3.  
  4. func test_func(n1 int,n2 int) (int){
  5. var ret int
  6. ret = n1 + n2
  7. return ret
  8. }
  9.  
  10. func main(){
  11. var f int
  12. f = test_func(1,3)
  13. fmt.Printf("Type: %T Value: %v\n",f,f)
  14.  
  15. }
  16.  
  17. ##结果##
  18. Type: int Value: 4

  

二、递归函数

例子

  1. package main
  2. import "fmt"
  3.  
  4. func digui_func(n1 int){
  5. if n1 > 2 {
  6. n1--
  7. fmt.Println(n1)
  8. digui_func(n1)
  9. }
  10. }
  11.  
  12. func main(){
  13. digui_func(5)
  14. }
  15.  
  16. ##结果##
  17. 4
  18. 3
  19. 2

  

三、init函数(初始化函数)

没一个源文件都可以包含一个init函数,init函数校准main函数执行前执行。

例子:

  1. package main
  2. import "fmt"
  3.  
  4. func init(){
  5. fmt.Println("init.....")
  6. }
  7.  
  8. func main(){
  9. fmt.Println("main.....")
  10. }
  11.  
  12. ##结果##
  13. init.....
  14. main.....

  

四、匿名函数

例子:

  1. package main
  2. import "fmt"
  3.  
  4. func main(){
  5. res := func(n1,n2 int) int{
  6. return n1 + n2
  7. }
  8.  
  9. var s1 int
  10. var s2 int
  11. s1 = res(1,2)
  12. fmt.Println(s1)
  13. s2 = res(3,4)
  14. fmt.Println(s2)
  15. }
  16.  
  17. ##结果##
  18. 3
  19. 7

  

全局匿名函数

例子:

  1. package main
  2.  
  3. var (
  4. res := func(n1,n2 int) int{
  5. return n1 + n2
  6. }
  7.  
  8. )

  

五、闭包函数

例子:

  1. package main
  2. import "fmt"
  3.  
  4. func bibao() func (int) int {
  5. var n int = 10
  6. return func (x int) int {
  7. n = n + x
  8. return n
  9. }
  10. }
  11.  
  12. func main(){
  13. f := bibao()
  14. f1 := bibao()
  15. fmt.Println(f(1))
  16. fmt.Println(f1(2))
  17.  
  18. }
  19.  
  20. ##结果##
  21. 11
  22. 12

  

六、函数的defer

为了在函数执行完成后,及时释放资源,go的设计者提供了defer(延时机制)

适合用再关闭文件、关闭数据库连接等

例子:

  1. package main
  2. import "fmt"
  3.  
  4. func test() int {
  5. defer fmt.Println("s1")
  6. defer fmt.Println("s2")
  7. var ss int = 10
  8. fmt.Println("s3")
  9. return ss
  10. }
  11.  
  12. func main(){
  13. ret := test()
  14. fmt.Println(ret)
  15. }
  16.  
  17. ##结果##
  18. s3
  19. s2
  20. s1
  21. 10

  

golang函数的更多相关文章

  1. GO开发[四]:golang函数

    函数 1.声明语法:func 函数名 (参数列表) [(返回值列表)] {} 2.golang函数特点: a. 不支持重载,一个包不能有两个名字一样的函数 b. 函数是一等公民,函数也是一种类型,一个 ...

  2. golang函数学习笔记

    golang函数特点: a.不支持重载,一个包不能有两个名字一样的函数 b.函数是一等公民,函数也是一种类型,一个函数可以赋值给变量 c.匿名函数 d.多返回值   例子1 func add(a, b ...

  3. golang 函数作为类型

    golang 函数作为类型 package main import "fmt" type A func(int, int) func (f A)Serve() { fmt.Prin ...

  4. electron/nodejs实现调用golang函数

    https://www.jianshu.com/p/a3be0d206d4c 思路 golang 支持编译成c shared library, 也就是系统中常见的.so(windows下是dll)后缀 ...

  5. vim支持golang函数调整

    golang函数跳转需要借助godef实现 godef安装如下 go get -v github.com/rogpeppe/godef go install -v github.com/rogpepp ...

  6. Golang函数-递归函数

    Golang函数-递归函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.

  7. Golang函数-不定参函数

    Golang函数-不定参函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.

  8. Golang函数-匿名函数与闭包函数

    Golang函数-匿名函数与闭包函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.

  9. Golang函数-函数的基本概念

    Golang函数-函数的基本概念 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.函数的概述 1>.函数定义语法格式 Go语言函数定义格式如下: func 函数名( 函数参 ...

  10. golang 函数和方法

    由于自己是搞python开发的,所以在学习go时,当看到函数和方法时,顿时还是挺蒙的,因为在python中并没有明显的区别,但是在go中却是两个完全不同的东西.在官方的解释中,方法是包含了接收者的函数 ...

随机推荐

  1. 【Mybatis】使用Mybatis-Generator自动生成entity、dao、mapping

    使用过mybatis的应该都有用过Mybatis-Generator,本文主要介绍使用Mybatis-Generator来自动生成entity.dao.mapping文件. Mybatis-Gener ...

  2. django项目前期准备

    本文转载自 https://blog.csdn.net/xiaogeldx/article/details/89037748 Django现状 Django开发前景 Django的厉害之处 在Pyth ...

  3. 虹软2.0 离线人脸识别 Android 开发 Demo

    环境要求1.运行环境 armeabi-v7a2.系统要求 Android 5.0 (API Level 21)及以上3.开发环境 Android Studio 下载地址:https://github. ...

  4. js判断时间是否超过了16:30

    // 判断时间是否超过了16:30 // true: 已超时 // false: 未超时 function timeCompare() { var now = new Date(); var nowT ...

  5. 浅谈TCP IP协议栈(三)路由器简介

    读完这个系列的第一篇浅谈TCP/IP协议栈(一)入门知识和第二篇浅谈TCP/IP协议栈(二)IP地址,在第一篇中,可能我对协议栈中这个栈的解释有问题,栈在数据结构中是一种先进后出的常见结构,而在整个T ...

  6. eclipse IDE使用git方法简单介绍

    eclipse下使用git插件上传代码至github 1.eclipse下安装git eclipse  git 插件的安装. 点击 Help->Install New Software-> ...

  7. 消息 4900,级别 16,状态 2,第 1 行 对表 'XX.XXX' 执行 ALTER TABLE SWITCH 语句失败。对于已启用更改跟踪的表,不可能切换其分区。请先禁用更改跟踪,再使用 ALTER TABLE SWITCH。

    问题描述: 今天处理切换分区数据的时候出现了这个错误: 消息 4900,级别 16,状态 2,第 1 行 对表 'XX.XXX' 执行 ALTER TABLE SWITCH 语句失败.对于已启用更改跟 ...

  8. 目录命令(dir)

    DIR 命令: // 描述: (Directory) 显示目录的文件和子目录的列表. // 语法: dir [<Drive>:][<Path>][<FileName> ...

  9. C语言简单实现链栈基本几个功能

            接着上一次的顺序栈,今天我记一下链栈,因为我也是刚学不久,有些地方也稍稍理解不了,所以,一起共勉.我会用我自己结合教材上画的图,争取跟代码一起结合,用文字和图最大化的解释代码,这样的话 ...

  10. threejs学习笔记(一)

    得到webgl的渲染管线