与“golang”相关的TAG标签
Go的time.Format()不支持自动添加日期序数后缀(如"1st"、"2nd"),需手动拼接后缀逻辑,再结合标准布局字符串完成格式化。
MD5和SHA256的Sum()返回结构体,需用sum.Sum(nil)获取字节切片并转十六进制;MD5不安全,应优先使用SHA256;大文件哈希须流式处理;字符串需正确转[]byte并注意UTF-8编码。
os.ReadFile读大文件会卡住是因为它一次性加载全部内容到内存,易触发OOM;应改用bufio.Scanner配合适当缓冲区,或io.ReadAt实现并发安全读取。
反射是运行时类型镜像,unsafe是绕过类型的内存扳手:前者通过reflect.Type/Value读取元数据,安全但慢;后者用unsafe.Pointer直接操作内存地址,快但危险易崩溃。
json.Marshal和json.Unmarshal慢因标准库依赖反射动态检查字段,导致高并发下CPU和内存开销大;easyjson通过代码生成绕过反射,配合结构体强约定、避免interface{}/map[string]interface{}、复用缓冲区等可显著提升性能。
fmt.Scan适合简单空格分隔输入但易卡住;bufio.Scanner推荐用于安全读整行;fmt.Fscanf适用于固定格式解析;交互输入需处理EOF和缓冲区。
Go的time.Format()不支持自动添加英文日期序数词后缀(如"1st"、"2nd"),需手动拼接;本文提供简洁可靠的自定义格式化函数,并涵盖边界处理与本地化扩展建议。
值类型变量本身不能被共享,必须转为指针;Go中所有传递都是值传递,仅当值为指针时才实现内存共享,切片/map/channel是带header的值类型,sync.Pool不用于跨goroutine共享,channel传指针可安全转移所有权,逃逸分析决定指针是否真正指向堆内存。
Go的time.Format()不支持自动添加日期序数后缀(如1st、2nd、3rd),需手动拼接;本文提供简洁可靠的自定义格式化函数,并涵盖边界处理与本地化注意事项。
filepath.Join拼接时若任一参数为绝对路径则前面全被丢弃;filepath.Base遇末尾斜杠返回空字符串;组合使用时须先调用filepath.Clean再取Base,以处理../、//、末尾/等边界情况。
