回答

收藏

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

技术问答 技术问答 231 人阅读 | 0 人回复 | 2023-09-12

测试非空字符串( Go 中)?
2 i$ |( A4 Y- C$ [4 c. A( F
    ; k+ `! V% ~& j' Q
  • if len(mystring) > code]或者:- F5 E# a/ @- c, R. p
  • [code]if mystring != "" { }code]还是别的?: D  ?% n4 b, v# J3 F
  •                                                                , T3 m: `) x* f. J0 }! j8 `: i
  •     解决方案:                                                               1 {6 N# Z" z* |; F7 ~' ^6 L' {
  •                                                                 这两种风格都在 Go 在标准库中使用。[code]if len(s) > 0 { ... }
    * P# W4 i+ b1 r) O
可以在strconv包中找到:http : //golang.org/src/pkg/strconv/atoi.go
3 Y& p9 R, Y9 B7 e9 d4 Z" Z4 u
    if s != "" { ... }
    , d1 d7 s0 D+ }; u' s, a/ F
可以在encoding/json包中找到:http : //golang.org/src/pkg/encoding/json/encode.go' S+ D8 t. g8 x* q0 w; Z- q7 S1 X
两者都很常见,而且足够清楚。这更多的是个人品味和清晰度的问题。: g7 U2 h7 a( b( _) A
Russ Cox 在golang-nuts 线程写道:. H& }$ ^9 L; B5 Z5 t$ D
使代码清晰的那个。
' K2 h! U1 T" Y* a$ Y假如要查元素 x,我通常会写: j# b2 [  I9 G& S0 ~
len(s) > x,即使 x == 0,但如果我关心的话; P0 l, J% w! h4 z' V' x. ?4 F
倾向于写 s == “”。+ v4 r" ^  H4 V8 e9 ~6 W! E
可以合理地假设成熟的编译器会将
7 K5 ~3 W- X3 D3 y4 wlen(s) == 0 和 s == “”编译成相同的高效代码。
8 s4 k3 G& k& Q) W/ c3 y6 {7 a# J2 O/ V9 q6 \; X0 y
让代码清晰。
# v4 U, h* |" ?; h5 S/ B! b正如答案所指出的,Go 编译器在两种情况下生成相同的代码:" j* I" y0 H* t) l$ X$ w3 A
截至目前,Go 编译器在两种情况下都会生成相同的代码,所以这是一个品味问题。GCCGo 确实生成了不同的代码,但很少有人使用它,所以我不担心。
5 w  d2 p. E6 K- d% `! ihttps://godbolt.org/z/fib1x1
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则