golang
已收录文章:1323篇
-
Go中处理文件路径和文件夹操作需使用path/filepath和os标准库。首先,filepath.Join可跨平台拼接路径,避免硬编码分隔符;filepath.Clean能规范化路径,去除冗余的.和..;os.Stat用于判断文件或目录是否存在并获取元信息,配合os.IsNotExist可安全处理不存在的情况;创建多级目录应使用os.MkdirAll,删除目录推荐os.RemoveAll,但需谨慎防止误删;遍历目录内容优先用Go1.16+的os.ReadDir,效率更高且返回fs.DirEntry信息。399 收藏
-
使用filepath.Walk遍历目录并获取文件信息,结合os.FileInfo接口可获取文件名、大小、权限、修改时间等元数据,通过回调函数处理每个文件或目录,支持递归遍历子目录和符号链接控制,可用于文件过滤与错误处理。398 收藏
-
DockerCompose通过一个YAML文件定义Golang多服务环境,实现一键启动API服务、Worker、数据库和缓存等所有组件,确保环境一致性、提升开发效率、简化依赖管理,并支持健康检查、网络隔离、资源限制和多阶段安全镜像构建,极大优化了微服务的本地开发与CI/CD流程。398 收藏
-
值类型不一定分配在栈上,Go通过逃逸分析决定变量内存位置:若局部变量被外部引用则分配在堆,否则在栈。例如返回结构体指针会导致其逃逸到堆,而返回值则不逃逸。使用gobuild-gcflags="-m"可查看逃逸分析结果,优化内存分配。398 收藏
-
包和模块命名需遵循小写、简洁、功能明确的原则,包名与目录一致,模块名全局唯一;通过import别名解决包名冲突,用replace或fork解决模块名冲突;选择好包名应功能导向、避免歧义、保持一致并参考标准库;依赖管理需遵循语义化版本控制,最小化依赖、使用接口、定期更新以减少冲突。398 收藏
-
Golang网络编程的核心是net包,它支持TCP、UDP、IP和Unix域套接字等协议。通过net.Listen监听端口,Accept接受连接,并使用goroutine并发处理多个客户端请求,实现高效服务器。TCP提供可靠连接,适用于Web服务和数据库通信;UDP无连接,适合实时性要求高的场景如游戏和视频流;IP协议用于底层网络工具开发;Unix域套接字则用于本地进程间高速通信。并发处理通过goroutine实现,每个连接由独立goroutine处理,提升吞吐量。为保证程序健壮性,需设置SetReadD397 收藏