golang
已收录文章:14107篇
-
Go中方法可绑定值或指针接收者,指针接收者操作原始实例,值接收者操作副本;2.推荐使用指针接收者修改字段、避免大结构复制、保持方法集一致及接口匹配;3.调用时Go自动处理取址,但需防范nil指针解引用导致panic。328 收藏
-
使用bufio包可提升Go语言I/O性能,通过缓冲机制减少系统调用。1.bufio.Scanner适合逐行读取文本,如日志或配置文件,默认按行分割,支持自动扩容缓冲区;2.bufio.Reader提供更细粒度控制,可用于读取指定字节数或分隔符,适用于大文件按块读取;3.bufio.Writer通过缓冲写入减少磁盘操作,需调用Flush确保数据落盘;4.在标准输入输出中使用Scanner可高效读取用户输入。关键在于根据场景选择合适类型并注意刷新缓冲区。124 收藏
-
Protobuf在性能和数据体积上优于JSON,因其为二进制协议且避免反射,适用于内部服务通信;JSON因可读性和兼容性,更适合对外API。317 收藏
-
Go的sync包提供Mutex和RWMutex用于并发安全;2.Mutex通过Lock/Unlock确保临界区互斥访问,需deferUnlock防死锁;3.RWMutex在读多写少场景提升性能,允许多个读但写时独占;4.使用建议包括选合适锁类型、避免持锁耗时操作、注意锁粒度与嵌入问题。272 收藏
-
使用sync.Mutex或RWMutex保护共享结构体字段,读多写少场景优先用RWMutex提升性能,避免锁粒度过大或嵌套导致死锁,简单类型操作可采用atomic实现无锁安全,关键在于封装同步逻辑、统一访问入口以确保并发安全。488 收藏
-
Golang中的指针是存储变量内存地址的变量,通过声明指针、&获取地址、解引用访问值,可用于修改外部变量、高效传递大对象、表示可选值及实现链表等数据结构,但需避免空指针解引用和过度使用导致内存问题。161 收藏