一尘不染

在 Go 中测试空字符串的最佳方法是什么?

go

哪种方法最适合(更惯用)测试非空字符串(在 Go 中)?

if len(mystring) > 0 { }

或者:

if mystring != "" { }

或者是其他东西?


阅读 183

收藏
2021-10-29

共1个答案

一尘不染

这两种风格都在 Go 的标准库中使用。

if len(s) > 0 { ... }

可以在strconv包中找到:http : //golang.org/src/pkg/strconv/atoi.go

if s != "" { ... }

可以在encoding/json包中找到:http : //golang.org/src/pkg/encoding/json/encode.go

两者都是惯用的,并且足够清楚。这更多是个人品味和清晰度的问题。

Russ Cox 在golang-nuts 线程中写道:

使代码清晰的那个。
如果我要查看元素 x,我通常会写
len(s) > x,即使 x == 0,但如果我关心
“它是这个特定的字符串吗”,我倾向于写 s == “”。

可以合理地假设成熟的编译器会将
len(s) == 0 和 s == “”编译成相同的高效代码。

让代码清晰。

正如回答中所指出的,Go 编译器在两种情况下都会生成相同的代码:

截至目前,Go 编译器在两种情况下都会生成相同的代码,因此这是一个品味问题。GCCGo 确实生成了不同的代码,但几乎没有人使用它,所以我不会担心。

https://godbolt.org/z/fib1x1

2021-10-29