![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Golang
文章平均质量分 96
北顾.岛城
半吊子技术,半吊子人生
展开
-
Go编程的一些最佳实践
这种编程模式在 Go 的标准库有很多的示例,最著名的就是 io.Read 和 ioutil.ReadAll 的玩法,其中 io.Read 是一个接口,你需要实现它的一个 Read(p []byte) (n int, err error) 接口方法,只要满足这个规则,就可以被 ioutil.ReadAll这个方法所使用。但是,这种方式最大的问题是,Undo 操作其实是一种控制逻辑,并不是业务逻辑,所以,在复用 Undo 这个功能时,是有问题的,因为其中加入了大量跟 IntSet 相关的业务逻辑。原创 2024-01-03 23:30:27 · 1144 阅读 · 2 评论 -
【go学习笔记】Go errors 最佳实践
预定义的特定错误,我们叫为 sentinel error,这个名字来源于计算机编程中使用一个特定值来表示不可能进行进一步处理的做法。所以对于 Go,我们使用特定的值来表示错误。类似的 io.EOF,更底层的 syscall.ENOENT。使用 sentinel 值是最不灵活的错误处理策略,因为调用方必须使用 == 将结果与预先声明的值进行比较。当您想要提供更多的上下文时,这就出现了一个问题,因为返回一个不同的错误将破坏相等性检查。原创 2023-10-15 20:26:49 · 611 阅读 · 0 评论 -
【go语言学习笔记】05 Go 语言实战
RESTful API 是一套规范,它可以规范如何对服务器上的资源进行操作。和 RESTful API 和密不可分的是 HTTP Method。RPC,也就是远程过程调用,是分布式系统中不同节点调用的方式(进程间通信),属于 C/S 模式。RPC 由客户端发起,调用服务端的方法进行通信,然后服务端把结果返回给客户端。通信协议和序列化。在 HTTP 2 之前,一般采用自定义 TCP 协议的方式进行通信,HTTP 2 出来后,也有采用该协议的,比如流行的gRPC。序列化和反序列化。原创 2023-08-14 21:47:57 · 631 阅读 · 0 评论 -
【go语言学习笔记】04 Go 语言工程管理
顾名思义,单元测试强调的是对单元进行测试。在开发中,一个单元可以是一个函数、一个模块等。一般情况下,要测试的单元应该是一个完整的最小单元,比如 Go 语言的函数。单元测试由开发者自己编写,也就是谁改动了代码,谁就要编写相应的单元测试代码以验证本次改动的正确性。基准测试(Benchmark)是一项用于测量和评估软件性能指标的方法,主要用于评估代码的性能。代码规范检查,顾名思义,是从 Go 语言层面出发,依据 Go 语言的规范对代码进行的静态扫描检查,这种检查和业务无关。原创 2023-08-10 21:43:01 · 553 阅读 · 0 评论 -
【go语言学习笔记】03 Go 语言深入理解
在 Go 语言中,获取一个变量的指针非常容易,使用取地址符 & 就可以name := "小明" nameP := & name //取地址 fmt . Println("name变量的值为:" , name) fmt . Println("name变量的内存地址为:" , nameP) }指针类型非常廉价,只占用 4 个或者 8 个字节的内存大小。在 Go 语言中使用类型名称前加 * 的方式,即可表示一个对应的指针类型。原创 2023-08-01 09:24:46 · 209 阅读 · 0 评论 -
【go语言学习笔记】02 Go语言高效并发
Context 是一个接口,它具备手动、定时、超时发出取消信号、传值等功能,主要用于控制多个协程之间的协作,尤其是取消操作。一旦取消指令下达,那么被 Context 跟踪的这些协程都会收到取消信号,就可以做清理和退出操作。} }Deadline 方法可以获取设置的截止时间,第一个返回值 deadline 是截止时间,到了这个时间点,Context 会自动发起取消请求,第二个返回值 ok 代表是否设置了截止时间。Done 方法返回一个只读的 channel,类型为 struct{}。原创 2023-07-25 19:32:47 · 254 阅读 · 0 评论 -
【go语言学习笔记】01 Go语言快速入门
常量的定义和变量类似,只不过它的关键字是 const。因为 Go 语言可以类型推导,所以在常量声明时也可以省略类型。在 Go 语言中,只允许布尔型、字符串、数字类型这些基础类型作为常量。//基于数组生成切片,包含索引start,但是不包含索引end slice := array [ start : end ]在数组 array 中,元素 c 的索引其实是 2,但是对数组切片后,在新生成的切片 slice 中,它的索引是 0,这就是切片。原创 2023-07-21 15:40:26 · 306 阅读 · 0 评论