[Golang]Go 1.21 中的 CGO 性能(小伙伴们都升级了吗?) Cgo调用大约需要40ns,大约相同的时间 encoding/json解析单个数字整数所需的时间。 在我的 20 核机器上 Cgo 调用性能随着核心数量的增加而扩展,最多可达 16 个核心,之后一些已知的争用问题会减慢速度。虽然本文的很多内容都认为“Cgo 性能实际上很好”,但请不要认为这...
Go1.20 集成测试的代码覆盖率 代码覆盖工具可帮助开发人员确定在执行给定测试套件时执行(覆盖)了源代码库的哪一部分。一段时间以来,Go 提供了支持(在 Go 1.2 版本中引入)来测量包级别的代码覆盖率,使用“go test”命令的“-cover”标志。该工具在大多数情况下都运行良好,但对于较大的 Go 应用程序有一些弱点。对于此...
Golang 资源文件和文件数组 golang 下面弄资源文件给我一种很难受的感觉 不过go 1.16 后 //go:embed 可以轻松制作资源文件 在之前需要借助第三方包 等实现当然也可以用工具将文件转换成 []byte 然后在来操作。这里有个转换工具 文件小于1mb的可以直接使用在线版处理 大于的可以下载文件命令行工具操作连接...
Golang 编译成 dll/so 动态库 给其他语言调用[实列为 delphi调用] 最近在做一个桌面应用的东西 ,涉及到一个功能,(因为是桌面的有界面的程序我一般都会考虑用delphi)但是其中涉及到一个功能 ,delphi没有现成的实现单元或者组件实现 ,也不是一个简单的方法所以直接翻译过来这个选项放弃之。。 本来第一想到的是用惯了的c/c++ 但是顺带看了下go的实现包,哇简单...
Golang-包的定义和使用[go to package] 之前写Go语言基础的小测试都是单个文件也看到引用了包,今天我来看看自己写一个包文件的使用方法好吧直接上代码.假设 定义一个数据库操作包 代码如下package db import "fmt"func ConnectDB()&...
Golang-并发协程基础-goroutine[小小例子] 在编写 Socket 网络程序时,需要提前准备一个线程池为每一个 Socket 的收发包分配一个线程。开发人员需要在线程数量和CPU 数量间建立一个对应关系,以保证每个任务能及时地被分配到 CPU 上进行处理,同时避免多个任务频繁地在线程间切换执行而损失效率。虽然,线程池为逻辑编写者提供了线程分配的...
Golang-程序奔溃/修复[panic/recover],结合之前讲的defer的例子 panic/recover这个panic 其实在我现实开发GO中还真没怎么用过。可能是太可怕了 ,恐惧到惊吓到了。 哈哈这个例子看到了, 我使用了之前学过的 defer 来捕获奔溃 。如果不加 是捕获不到的哦,你们可以复制了代码 然后删除defer 自己试试看。```gopackage...
Golang-程序的延迟调用 defer(二)文件例子 这实际上用一个 写文件的例子 来说明创建了一个文件 写入了一堆东西在创建文件完成后我们就使用defer 来把关闭文件的操作延迟执行这样我们就很显然啦 知道打开了就关闭啦一个小例子```gopackage mainimport ( “os”)func main() { file...
Golang-程序的延迟调用 defer defer 的使用例子下面的例子可以看出 加了defer后的执行都会后执行如果全加了 执行就从最后一个先开始执行.``` gopackage mainimport “fmt” func doDefer() { defer fmt.Println(“1”) defer fmt.Pr...