Go语言中init函数与匿名函数使用浅析
目录
- init函数
- 基本介绍
- 注意事项和细节
- 案例
- 匿名函数
- 介绍
- 调用方式
- 方式1
- 方式2
init函数
基本介绍
每一个源文件都可以包含一个init函数,该函数会在main函数执行前,被Go运行框架调用,也就是说init会在main函数前被调用
package main import "fmt" //init函数,通常可以在init函数中完成初始化工作 func init() { fmt.Println("init()") } func main() { fmt.Println("main()") } /* init() main() */
注意事项和细节
1.如果一个文件同时包含全局变量定义,init函数和main函数,则执行的流程是变量定义->init函数->main函数
2.init函数最主要的作用,就是完成一些初始化的工作
案例
如果main.go和utils.go都含有变量定义init函数时,执行的流程又是怎么样的?
匿名函数
介绍
Go支持匿名函数,如果我们某个函数知识希望使用一次,可以考虑使用匿名函数,匿名函数也可以实现多次调用。
调用方式
方式1
在定义匿名函数时就直接调用,这种方式匿名函数只能调用一次
package main import ( "fmt" ) func main() { res1 := func ( n1 int, n2 int) int { return n1 + n2 }(10, 20) fmt.Println("res1=", res1) }
方式2
将匿名函数赋给一个变量(函数变量),再通过变量来调用匿名函数
package main import ( "fmt" ) func main() { //将匿名函数func (n1 int,n2 int)int赋值给a变量 //则a的数据类型就是函数类型,此时,我们可以通过a完成调用 a := func ( n1 int, n2 int) int { return n1 + n2 } res1 := a(10, 20) fmt.Println("res1=", res1) }
到此这篇关于Go语言中init函数与匿名函数使用浅析的文章就介绍到这了,更多相关Go init函数与匿名函数内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
相关推荐
-
Go语言init函数详解
Go init函数详解 init()函数会在每个包完成初始化后自动执行,并且执行优先级比main函数高.init 函数通常被用来: 对变量进行初始化 检查/修复程序的状态 注册 运行一次计算 包的初始化 为了使用导入的包,首先必须将其初始化.初始化总是以单线程执行,并且按照包的依赖关系顺序执行.这通过Golang的运行时系统控制,如下图所示: 初始化导入的包(递归导入) 对包块中声明的变量进行计算和分配初始值 执行包中的init函数 initial.go package main import
-
Go语言之init函数
init函数会在main函数执行之前进行执行.init用在设置包.初始化变量或者其他要在程序运行前优先完成的引导工作. 举例:在进行数据库注册驱动的时候. 这里有init函数 package postgres package postgres import ( "database/sql" "database/sql/driver" "errors" ) // PostgresDriver provides our implementation
-
Go语言中init函数和defer延迟调用关键词详解
Go语言中init函数和defer延迟调用关键词 golang里面有两个保留函数 main 函数(只能应用于package main) init 函数(能够应用于所有的package) go程序会自动调用 init()和main() 所以你不能在任何地方调用这两个函数 package main 必须包含一个main 函数,但是每个package中的init函数都是可选的 一个package 里可以写多个init函数,建议每个包中只写一个init函数 单个包中代码执行顺序如下 main包 -->
-
C语言中strlen() strcpy() strcat() strcmp()函数的实现方法
strlen函数原型:unsigned int strlen(const char *);返回的是字符串中第一个\0之前的字符个数. 1.strcat函数原型char* strcat(char* dest,const char* src); 进行字符串的拼接,将第二个字符串连接到第一个字符串中第一个出现\0开始的地方.返回的是拼接后字符的首地址.并不检查第一个数组的大小是否可以容纳第二个字符串.如果第一个数组的已分配的内存不够容纳第二个字符串,则多出来的字符将会溢出到相邻的内存单元. 2.str
-
浅谈C语言中strcpy,strcmp,strlen,strcat函数原型
实例如下: //strcat(dest,src)把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0' char *strcat(char * strDest, const char *strSrc) { char *res=strDest; assert((strDest!=NULL)&&(strSrc!=NULL)); while(*strDest)strDest++; while(*strDest=*strSrc) { strDest++; strSrc
-
R语言中的fivenum与quantile()函数算法详解
fivenum()函数: 返回五个数据:最小值.下四分位数数.中位数.上四分位数.最大值 对于奇数个数字=5,fivenum()先排序,依次返回最小值.下四分位数.中位数.上四分位数.最大值 > fivenum(c(1,12,40,23,13)) [1] 1 12 13 23 40 对于奇数个数字>5,fivenum()先排序,我们可以求取最小值,最大值,中位数.在排序中,最小值与中位数中间,若为奇数,取其中位数为下四分位数,若为偶数,取最中间两个数的平均值为下四分位数:在排序中,中位数与最大
-
详解C语言中sizeof如何在自定义函数中正常工作
1.在main函数中,sizeof是可以正常工作的,比如: int main() { int n[5]; printf("input: \n"); int i ; for(i = 0; i < 5; i++) { scanf("%d",n + i); } int len = sizeof(n)/sizeof(n[0]); printf("%d\n",len); return 0; } 2.但是在自定义函数中就不可以了,如下: #includ
-
PHP回调函数与匿名函数实例详解
本文实例讲述了PHP回调函数与匿名函数.分享给大家供大家参考,具体如下: 回调函数和匿名函数 回调函数.闭包在JS中并不陌生,JS使用它可以完成事件机制,进行许多复杂的操作.PHP中却不常使用,今天来说一说PHP中中的回调函数和匿名函数. 回调函数 回调函数:Callback (即call then back 被主函数调用运算后会返回主函数),是指通过函数参数传递到其它代码的,某一块可执行代码的引用. 通俗的解释就是把函数作为参数传入进另一个函数中使用:PHP中有许多 "需求参数为函数"
-
Javascript中的回调函数和匿名函数的回调示例介绍
复制代码 代码如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> <script type="text/javascript"> /* * 匿名函数自调的意义: 1.营造了一个封闭的空间 2.防止变量冲突 3.有选择性的对外开发(第三方框架都是对js这样封装
-
基于python内置函数与匿名函数详解
内置函数 Built-in Functions abs() dict() help() min() setattr() all() dir() hex() next() slice() any() divmod() id() object() sorted() ascii() enumerate() input() oct() staticmethod() bin() eval() int() open() str() bool() exec() isinstance() pow() super
-
PHP回调函数及匿名函数概念与用法详解
本文实例讲述了PHP回调函数及匿名函数概念与用法.分享给大家供大家参考,具体如下: 1.回调函数 PHP的回调函数其实和C.Java等语言的回调函数的作用是一模一样的,都是在主线程执行的过程中,突然跳去执行设置的回调函数: 回调函数执行完毕之后,再回到主线程处理接下来的流程 而在php调用回调函数,不想c以及java那样直接使用函数名作为函数参数,而是在php中使用函数对应的字符串名称执行 1.1.无参数回调 <?php //无参数回调 function callback(){ echo 'ex
-
浅谈python之高阶函数和匿名函数
map() map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回. def func(x): return x*x r = map(func, [1, 2, 3, 4, 5]) print(type(r)) r = list(r) print(r) 输出结果: <class 'map'> [1, 4, 9, 16, 25] 可以看出,map让函数func作用于列表的每一项,使列表的每一项都被函数func
随机推荐
- MYSQL表优化方法小结 讲的挺全面
- junit4教程junit4.5官方下载
- asp.net基础学习之控件的使用方法
- JS弹出对话框返回值代码(asp.net后台)
- PHP文件大小格式化函数合集
- C#数据库操作类AccessHelper实例
- JS 清除字符串数组中,重复元素的实现方法
- 老生常谈iOS应用程序生命周期
- 关于PHPDocument 代码注释规范的总结
- 解读absolute与relative
- jQuery中需要注意的细节问题小结
- 当ie7不认!important之后 [布局的解决办法]
- 如何实现textarea里的不同文本显示不同颜色
- 送给内向的人,挺恰当[了解自己]
- Lua协程(coroutine)程序运行分析
- JavaScript实现公历转农历功能示例
- php实现CSV文件导入和导出
- Python实现针对给定单链表删除指定节点的方法
- 微信小程序和百度的语音识别接口详解
- 易语言的启动qq程序写法实例