Golang中Slice命名使用重复字母的技巧
Golang中Slice命名使用重复字母的技巧 我观看了Brian Ketelsen的一场演讲,他在演讲中建议使用重复的字母来表示切片。
例如:
var tt []*Thing
我不确定这是否是一个好主意。在我的例子中,我正在编写一个HTTP处理程序,用于获取URL参数"message"。所以,我的代码如下所示:
func handlePut(w http.ResponseWriter, r *http.Request) {
mm, ok := r.URL.Query()["message"]
if !ok || len(mm) != 1 {
http.Error(w, "", http.StatusBadRequest)
return
}
m := mm[0]
...
我不觉得这种命名方式是合适的。我想,如果我使用 messages 和 message 这样的名称,代码可能会更具可读性。有人能给我一些建议吗?
更多关于Golang中Slice命名使用重复字母的技巧的实战教程也可以访问 https://www.itying.com/category-94-b0.html
我倾向于使用 -s 后缀来表示某个事物是一个集合。
更多关于Golang中Slice命名使用重复字母的技巧的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
通过查看 golang/go 源代码树中的一个随机文件,lookup.go,似乎有很多地方使用了 -s 后缀。通常当我看到一个 tt 标识符时,它标识的是一个测试表。
我赞同olavfosse的观点;对我来说,使用s后缀比重复字符更有意义。我认为在西班牙语中,重复字符来表示复数并不少见(例如,我认为Estados Unidos(“美国”)会变成“EEUU”)。
我也喜欢你说的直接用messages这个想法。在Go语言中,使用短变量名是一种惯用做法,我个人也遵循这个准则,但仅限于那些能在一个“屏幕”内显示完整代码的小型函数,并且整个函数中变量很少的情况。
在Go语言中,使用重复字母命名切片(如 tt 表示 []*Thing)是一种常见的约定,特别是在局部变量或短作用域中,可以简化代码并保持一致性。然而,在HTTP处理程序等需要清晰表达业务逻辑的场景中,使用更具描述性的名称(如 messages 和 message)确实能提高可读性。以下是两种方式的示例,你可以根据具体上下文选择:
示例1:使用重复字母(适合简单局部操作)
func handlePut(w http.ResponseWriter, r *http.Request) {
// tt 表示 []string 类型的切片
tt, ok := r.URL.Query()["message"]
if !ok || len(tt) != 1 {
http.Error(w, "Invalid parameter", http.StatusBadRequest)
return
}
t := tt[0] // t 表示单个字符串
// 使用 t 进行后续处理
fmt.Fprintf(w, "Message: %s", t)
}
示例2:使用描述性名称(推荐用于业务逻辑)
func handlePut(w http.ResponseWriter, r *http.Request) {
// messages 明确表示多个消息的切片
messages, ok := r.URL.Query()["message"]
if !ok || len(messages) != 1 {
http.Error(w, "Missing or multiple 'message' parameter", http.StatusBadRequest)
return
}
message := messages[0] // message 表示单个消息
// 使用 message 进行后续处理
fmt.Fprintf(w, "Received message: %s", message)
}
在实际项目中,建议优先考虑代码的可读性和维护性。如果团队或项目已有命名规范,遵循现有约定即可。

