快乐的程序员
GO每日一题(1) GO每日一题(1)
下面这段代码哪一行会编译失败func main() { nil := 123 fmt.Println(nil) var _ map[string]int = nil } 答案第三行 解析 第一行定义一个变量名为nil,类型为int,
2024-03-12
GO 函数返回值为interface{}注意避坑 GO 函数返回值为interface{}注意避坑
上代码type Person struct { Name string } func GetPerson() *Person { var p *Person return p } func GetPerson1() interfa
2024-03-12
深入理解GO Slice切片 深入理解GO Slice切片
写在前面周日下午在家学习,看到一个关于切片的问题,在网上找了一些资料,做个总结。 上代码func main() { sl := make([]int, 0, 10) var appenFunc = func(s []int) { s
2024-03-12
go 函数转换成接口 go 函数转换成接口
写在前面今天看cron源码的时候发现它支持Regist函数和接口,有一点思考。 上代码// 定义了任务接口 type Job interface { Run() } // 定义了任务函数 type FuncJob func() fun
2024-03-12
go cron实战 go cron实战
写在前面有时候在项目中需要用到定时任务,在网上搜了一下,找到robfig的cron开源包,有11k star。今天写篇文章,介绍一下它。 代码废话不多说,直接上菜 package main import ( "fmt" "log"
2024-03-12
go 复制context go 复制context
写在前面在项目中有时候需要异步运行某个函数,但是又不能因为主程序退出了而提前终止。比如一个异步接口触发的某个耗时任务,接口之间一般都会设有超时时间。所以不能因为接口已经结束了而导致异步任务终止,但是又不能传空context到异步任务中,因为
2024-03-12
Serverless实战-OpenFaaS Serverless实战-OpenFaaS
前言什么是ServerlessServerless字面意思是无服务。但是它不代表再也不需要服务器了,而是说:开发者再也不用过多考虑服务器的问题,计算资源作为服务而不是服务器的概念出现。Serverless是一种构建和管理基于微服务架构的完整
2024-03-12
GO 如何利用高阶函数写出优雅的代码 GO 如何利用高阶函数写出优雅的代码
前言go项目中经常需要查询db,按照以前java开发经验,会根据查询条件写很多方法,如: GetUserByUserID GetUsersByName GetUsersByAge 每一种查询条件写一个方法,这种方式对外是挺好的,对外遵循
2024-03-12
DDD目录结构 DDD目录结构
├── cmd 存放 main.go 等 ├── adapter │   ├── grpc │   └── http │   └── facade 引用其他微服务(接口防腐层)
2024-03-12
Go 可排序的map Go 可排序的map
前言众所周知,go map是无序的,每次遍历map得到的顺序是不一样的。如果非要实现有序,则只能先获取所有的key,再排序,然后遍历key,通过key获取value。 今天把上述操作封装了一下,写了一个可排序map。 接口// 创建一个So
2024-03-12
Go 函数返回nil避坑 Go 函数返回nil避坑
前言go语言写函数时经常返回nil,然后在函数外面判断返回值是否为空。这里有个bug,记录一下 问题1 (*Type)(nil) ≠ nil func returnsError() error { var p *MyError = nil
2024-03-12
grep快速搜索文本 grep快速搜索文本
1 r-递归查找grep -r 'for' * 2 i-忽略大小写grep -i 'a' * 3 c-显示匹配到的次数grep -cr 'for' * 4 n-输出行号grep -rn "for" * 5 l-只显示匹配到的
2024-03-12
16 / 22