后端
未读
go log添加钩子
package app
import (
"io"
"log"
"os"
"strings"
"testing"
)
// HookWriter 实现了 io.Writer 接口,在写入时执行自定义函数
type HookWriter struct {
inner io.Writer
后端
未读
go channel
概念 Go中的channel是一个队列,遵循先进先出的原则,负责协程之间的通信(Go建议不要使用共享内存来通信,而要通过通道来实现内存共享,CSP(Communicating Sequential Process)并发模型,就是根据goroutine和channel实现的) 使用场景 停止信号监听
后端
未读
go避免string转换发生内存拷贝
在Go语言中,string类型底层是由一个指向字符数组的指针、一个长度和一些其他元数据组成。当你将string转换为[]byte时,会发生内存拷贝,因为[]byte是一个新的切片,它需要自己的底层数组来存储数据。 如果不想进行内存拷贝,可以考虑以下几种方法: 使用*reflect.StringHea
后端
未读
go空结构体的用途和场景
作为map的轻量级键: 当map的键需要一个复合类型,但又不需要存储任何数据时,空结构体是一个理想的选择。由于空结构体的实例之间是相等的,它们可以作为map的键,而不需要担心比较问题。 var m = make(map[struct{}]int) m[struct{}] = 1 用于同步原语: 空结