哪种方法最适合(更理想的)用于测试非空字符串(在Go中)?
if len(mystring) > 0 { }
要么:
if mystring != "" { }
或者是其他东西?
Go的标准库中都使用了这两种样式。
if len(s) > 0 { ... }
可以在以下strconv软件包中找到:http : //golang.org/src/pkg/strconv/atoi.go
strconv
if s != "" { ... }
可以在以下encoding/json包中找到:http : //golang.org/src/pkg/encoding/json/encode.go
encoding/json
两者都是惯用的,而且很清楚。这更多的是个人品味和清晰度。
拉斯·考克斯(Russ Cox)在golang- nuts线程中写道:
使代码清晰的代码。 如果我要查看元素x ,即使x == 0,我通常也会写len(s)> x,但是如果我关心 “是这个特定的字符串”,我倾向于写s ==“”。 可以合理地假设成熟的编译器会将 len == 0和s ==“” 编译为相同的高效代码。 … 使代码清晰。
使代码清晰的代码。 如果我要查看元素x ,即使x == 0,我通常也会写len(s)> x,但是如果我关心 “是这个特定的字符串”,我倾向于写s ==“”。
可以合理地假设成熟的编译器会将 len == 0和s ==“” 编译为相同的高效代码。 …
使代码清晰。
正如Timmmm的回答所指出的,Go编译器在两种情况下的确生成相同的代码。