golang函数
一、函数语法
func 函数名(形参列表) (返回值列表){
......
return 返回值
}
例如:
- package main
- import "fmt"
- func test_func(n1 int,n2 int) (int){
- var ret int
- ret = n1 + n2
- return ret
- }
- func main(){
- var f int
- f = test_func(1,3)
- fmt.Printf("Type: %T Value: %v\n",f,f)
- }
- ##结果##
- Type: int Value: 4
二、递归函数
例子
- package main
- import "fmt"
- func digui_func(n1 int){
- if n1 > 2 {
- n1--
- fmt.Println(n1)
- digui_func(n1)
- }
- }
- func main(){
- digui_func(5)
- }
- ##结果##
- 4
- 3
- 2
三、init函数(初始化函数)
没一个源文件都可以包含一个init函数,init函数校准main函数执行前执行。
例子:
- package main
- import "fmt"
- func init(){
- fmt.Println("init.....")
- }
- func main(){
- fmt.Println("main.....")
- }
- ##结果##
- init.....
- main.....
四、匿名函数
例子:
- package main
- import "fmt"
- func main(){
- res := func(n1,n2 int) int{
- return n1 + n2
- }
- var s1 int
- var s2 int
- s1 = res(1,2)
- fmt.Println(s1)
- s2 = res(3,4)
- fmt.Println(s2)
- }
- ##结果##
- 3
- 7
全局匿名函数
例子:
- package main
- var (
- res := func(n1,n2 int) int{
- return n1 + n2
- }
- )
五、闭包函数
例子:
- package main
- import "fmt"
- func bibao() func (int) int {
- var n int = 10
- return func (x int) int {
- n = n + x
- return n
- }
- }
- func main(){
- f := bibao()
- f1 := bibao()
- fmt.Println(f(1))
- fmt.Println(f1(2))
- }
- ##结果##
- 11
- 12
六、函数的defer
为了在函数执行完成后,及时释放资源,go的设计者提供了defer(延时机制)
适合用再关闭文件、关闭数据库连接等
例子:
- package main
- import "fmt"
- func test() int {
- defer fmt.Println("s1")
- defer fmt.Println("s2")
- var ss int = 10
- fmt.Println("s3")
- return ss
- }
- func main(){
- ret := test()
- fmt.Println(ret)
- }
- ##结果##
- s3
- s2
- s1
- 10
golang函数的更多相关文章
- GO开发[四]:golang函数
函数 1.声明语法:func 函数名 (参数列表) [(返回值列表)] {} 2.golang函数特点: a. 不支持重载,一个包不能有两个名字一样的函数 b. 函数是一等公民,函数也是一种类型,一个 ...
- golang函数学习笔记
golang函数特点: a.不支持重载,一个包不能有两个名字一样的函数 b.函数是一等公民,函数也是一种类型,一个函数可以赋值给变量 c.匿名函数 d.多返回值 例子1 func add(a, b ...
- golang 函数作为类型
golang 函数作为类型 package main import "fmt" type A func(int, int) func (f A)Serve() { fmt.Prin ...
- electron/nodejs实现调用golang函数
https://www.jianshu.com/p/a3be0d206d4c 思路 golang 支持编译成c shared library, 也就是系统中常见的.so(windows下是dll)后缀 ...
- vim支持golang函数调整
golang函数跳转需要借助godef实现 godef安装如下 go get -v github.com/rogpeppe/godef go install -v github.com/rogpepp ...
- Golang函数-递归函数
Golang函数-递归函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.
- Golang函数-不定参函数
Golang函数-不定参函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.
- Golang函数-匿名函数与闭包函数
Golang函数-匿名函数与闭包函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.
- Golang函数-函数的基本概念
Golang函数-函数的基本概念 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.函数的概述 1>.函数定义语法格式 Go语言函数定义格式如下: func 函数名( 函数参 ...
- golang 函数和方法
由于自己是搞python开发的,所以在学习go时,当看到函数和方法时,顿时还是挺蒙的,因为在python中并没有明显的区别,但是在go中却是两个完全不同的东西.在官方的解释中,方法是包含了接收者的函数 ...
随机推荐
- 【Mybatis】使用Mybatis-Generator自动生成entity、dao、mapping
使用过mybatis的应该都有用过Mybatis-Generator,本文主要介绍使用Mybatis-Generator来自动生成entity.dao.mapping文件. Mybatis-Gener ...
- django项目前期准备
本文转载自 https://blog.csdn.net/xiaogeldx/article/details/89037748 Django现状 Django开发前景 Django的厉害之处 在Pyth ...
- 虹软2.0 离线人脸识别 Android 开发 Demo
环境要求1.运行环境 armeabi-v7a2.系统要求 Android 5.0 (API Level 21)及以上3.开发环境 Android Studio 下载地址:https://github. ...
- js判断时间是否超过了16:30
// 判断时间是否超过了16:30 // true: 已超时 // false: 未超时 function timeCompare() { var now = new Date(); var nowT ...
- 浅谈TCP IP协议栈(三)路由器简介
读完这个系列的第一篇浅谈TCP/IP协议栈(一)入门知识和第二篇浅谈TCP/IP协议栈(二)IP地址,在第一篇中,可能我对协议栈中这个栈的解释有问题,栈在数据结构中是一种先进后出的常见结构,而在整个T ...
- eclipse IDE使用git方法简单介绍
eclipse下使用git插件上传代码至github 1.eclipse下安装git eclipse git 插件的安装. 点击 Help->Install New Software-> ...
- 消息 4900,级别 16,状态 2,第 1 行 对表 'XX.XXX' 执行 ALTER TABLE SWITCH 语句失败。对于已启用更改跟踪的表,不可能切换其分区。请先禁用更改跟踪,再使用 ALTER TABLE SWITCH。
问题描述: 今天处理切换分区数据的时候出现了这个错误: 消息 4900,级别 16,状态 2,第 1 行 对表 'XX.XXX' 执行 ALTER TABLE SWITCH 语句失败.对于已启用更改跟 ...
- 目录命令(dir)
DIR 命令: // 描述: (Directory) 显示目录的文件和子目录的列表. // 语法: dir [<Drive>:][<Path>][<FileName> ...
- C语言简单实现链栈基本几个功能
接着上一次的顺序栈,今天我记一下链栈,因为我也是刚学不久,有些地方也稍稍理解不了,所以,一起共勉.我会用我自己结合教材上画的图,争取跟代码一起结合,用文字和图最大化的解释代码,这样的话 ...
- threejs学习笔记(一)
得到webgl的渲染管线