golang
已收录文章:14426篇
-
zap包的集成 简介 zap是一个可以在go项目中进行快速, 结构化且分级的日志记录包, git star数高达16.3k, Git 项目地址, 在各大公司项目中被广泛使用; 最基础的使用 package main import ( "go.uber.org/zap" "ti125 收藏
-
结构体内存布局 结构体大小 结构体实际上就是由各种类型的数据组合而成的一种符合数据类型,一个结构体变量的大小是由结构体中的字段决定。结构体和它所包含的数据在内存中是以连续块125 收藏
-
指针保存变量地址,通过T声明、&取地址、解引用,可修改原值并用于函数传参;切片是数组封装,含指针、长度、容量,共享底层数组易致副作用,需copy或append创建副本;指针与切片结合可用于修改切片本身,但推荐返回新切片;nil切片无底层数组,空切片有底层数组但无元素,判断为空应使用len(s)==0。124 收藏
-
使用net.Listen可创建TCP服务器,监听指定端口并处理并发连接。示例中通过net.Listen("tcp",":8088")启动服务,accept接收连接,并用goroutine处理每个连接,实现简单并发。支持TCP和Unix域套接字,后者适用于高效本地通信。需注意错误处理,如端口占用、权限不足,并通过deferlistener.Close()释放资源。结合tls.Listen可实现安全通信。该方法简洁但需关注超时、连接数等细节优化。124 收藏
-
使用bufio包可提升Go语言I/O性能,通过缓冲机制减少系统调用。1.bufio.Scanner适合逐行读取文本,如日志或配置文件,默认按行分割,支持自动扩容缓冲区;2.bufio.Reader提供更细粒度控制,可用于读取指定字节数或分隔符,适用于大文件按块读取;3.bufio.Writer通过缓冲写入减少磁盘操作,需调用Flush确保数据落盘;4.在标准输入输出中使用Scanner可高效读取用户输入。关键在于根据场景选择合适类型并注意刷新缓冲区。124 收藏
-
Go语言中可通过自动解引用访问嵌套指针字段,如person.Addr.City;深层访问需逐层判空避免panic,方法调用时指针接收者可直接使用点操作符,推荐封装辅助函数提升安全性与可读性。124 收藏