Go 语言 map 的 key 类型避坑:哪些能用,哪些一开始就不该用

Go 的 map 并不是“什么类型都能当 key”。判断标准只有一个核心:这个类型必须可比较,能参与 == 和 !=。本文按可用、不可用和常见陷阱三部分拆开讲清,顺带给出 struct、interface、slice 替代方案等实用判断方法。 在 Go 里写 map 时,很多人并不是一开始就搞清楚 key 的限制,而是在编译报错或运行时 panic 后才回头排查。

Go 语言 map 的 key 类型避坑:哪些能用,哪些一开始就不该用

Go 字符串遍历为什么 `range` 能打印汉字,`len` 索引却会乱码

同样是遍历 Go 字符串,`range` 能正常输出汉字,而基于 `len` 的索引循环却可能打印出乱码,关键差别不在“循环写法”,而在 Go 对字符串的底层定义。本文从 UTF-8、`byte`/`rune` 和常见处理方式三层展开,帮你判断什么时候该按字节处理,什么时候必须按字符处理。

Go 字符串遍历为什么 `range` 能打印汉字,`len` 索引却会乱码

如何有效使用 C++ 逻辑运算符

本文围绕 C++ 里的 `&&`、`||` 和 `!` 展开,梳理它们的语义、短路求值、常见业务写法与进阶组合方式。你可以据此判断什么时候该合并条件、什么时候该拆解表达式,以及如何避免可读性和逻辑错误。

如何有效使用 C++ 逻辑运算符