首页 > 其他分享 >golang: 一个闭包的有趣使用

golang: 一个闭包的有趣使用

时间:2024-05-31 21:54:31浏览次数:23  
标签:闭包 pre defer TimeTrack golang func time 有趣

来源

https://colobu.com/gotips/001.html

示例

package main

import "time"

func TimeTrack() func() {
	pre := time.Now()

	return func() {
		println(time.Since(pre).Milliseconds())
	}
}
func main() {
	defer TimeTrack()()
	time.Sleep(1024 * time.Millisecond)
}

原理解释

其实就是关于闭包的使用

通过两次闭包来实现变量的传递使用.

  1. TimeTrack​: 初始化时, 闭包内pre 初始化
  2. defer TimeTrack()()​: 在函数执行完毕后, 调用闭包, 获得时间差.

标签:闭包,pre,defer,TimeTrack,golang,func,time,有趣
From: https://www.cnblogs.com/pDJJq/p/18225334/golang-an-interesting-use-of-a-closure-1rc8ws

相关文章

  • golang中的数组和切片
    packagemainimport( "fmt" "time")funcmain(){ x:=[...]int{1,2,3}//数组的声明中可以使用...来代替具体的数字 y:=x//数组的赋值是全拷贝方式,所以对新数组的修改不影响原始数组 y[0]=4 //z:=append(x,2)//数组不可以使用app......
  • golang函数使用基础
    函数介绍有其他语言基础的话就没啥介绍的,基本语法:funcfunctionName(形参列别)(返回值列表){执行语句return返回值列表}例子:funcgetSum(n1int,n2int)int{varresint=n1+n2 returnres}包实际就创建不同的文件夹,存放程序文件。Go的每一个文......
  • 黑客团伙利用Python、Golang和Rust恶意软件袭击印国防部门;OpenAI揭秘,AI模型如何被用于
    巴黑客团伙利用Python、Golang和Rust恶意软件袭击印度国防部门!与巴基斯坦有联系的TransparentTribe组织已被确认与一系列新的攻击有关,这些攻击使用Python、Golang和Rust编写的跨平台恶意软件,针对印度政府、国防和航空航天部门。“这一系列活动从2023年底持续到2024年4月......
  • Golang GRPC 环境 问题
    生成文件执行protoc--go_out=.--go_opt=paths=source_relative--go-grpc_out=.--go-grpc_opt=paths=source_relativeservice.proto 报下列错处理方法1.'protoc-gen-go'不是内部或外部命令,也不是可运行的程序或批处理文件。a.检查gopath目录(%GOPATH%\)的bin文件夹,是否有......
  • golang import 导入的四种方式
     1标准导入:import"package_name" 2导入别名:import(alias"package_name") 3匿名导入:import(_"package_name") 4点导入:import(."package_name") 下面做详细解释:Go语言最常见的导入方式是标准导入,格式如下:import&qu......
  • golang context.Context 使用示例
    context在golang程序中经常被用到,它可以被用来携带一些变量,例如requestID,也可以用来做运行控制,比如TimeoutDeadline,或者人为逻辑控制Cancel。本实例程序用来简单展示各个context的使用方法。packagemainimport( "context" "fmt" "log" "time")typeCtxKeystring......
  • golang开发 gorilla websocket的使用
    很多APP都需要主动向用户推送消息,这就需要用到长连接的服务,即我们通常提到的websocket,同样也是使用socket服务,通信协议是基本类似的,在go中用的最多的、也是最简单的socket服务就是gorilla/websocket,它有21.1K的star,足以说明它的受欢迎程度,它的github地址是https://github.com/g......
  • 记一次有趣的逻辑漏洞挖洞经历
    前言前几天在网上冲浪的时候无意间看到了一个Edu的站点,是一个很常见的类似MOOC的那种在线学习系统,对外开放,同时有注册和登录功能。对于我这种常年低危的菜鸡来说,这是最愿意看到的,因为一个Web网站有了登录功能,就代表其网站必须要有权限划分,而有了权限划分,在这里的开发就容易出......
  • 1.1 Golang 初识
    1.1.1简介Go(又称Golang)是Google的RobertGriesemer,RobPike及KenThompson开发的一种计算机编程语言1.1.2设计初衷Go是一种编译型语言,可以进行快速开发,解决c/c++项目太慢内存泄漏等问题。有着很强的并发能力以及极低的内存消耗。1.1.3应用领域1.Go服务器端/游戏软件......
  • golang reflect 常见示例
    reflect是golang中元编程的能力体现。需要注意的是,reflect尽量不用,有性能问题,也有避免滥用的考虑。packagemainimport( "log" "reflect")typeAstruct{ aint bstring cbool}//实验reflect的相关函数funcmain(){ typeValue() callFunc()}funcother......