回答

收藏

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

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

测试非空字符串( Go 中)?
$ X' [1 `  c! T# K- D9 z
    , P2 R2 `4 M+ K6 ]
  • if len(mystring) > code]或者:
    5 g2 s1 J( T3 C6 s! i" x0 d
  • [code]if mystring != "" { }code]还是别的?" s. V  Z3 A( Q/ t7 t) K
  •                                                                
    ) Z# s1 }2 {2 N4 G1 G2 @+ ]
  •     解决方案:                                                               % L; Q0 @6 R2 G! o
  •                                                                 这两种风格都在 Go 在标准库中使用。[code]if len(s) > 0 { ... }4 F8 f+ Q; \. {) [. M2 u) W
可以在strconv包中找到:http : //golang.org/src/pkg/strconv/atoi.go
% k) E8 x8 ?! N8 l! r
    if s != "" { ... }
    # @0 D2 L6 m( F" Q+ ^
可以在encoding/json包中找到:http : //golang.org/src/pkg/encoding/json/encode.go
8 l7 N: V0 z0 a( j两者都很常见,而且足够清楚。这更多的是个人品味和清晰度的问题。
0 [* W& I; Z% P3 [! H/ ^6 eRuss Cox 在golang-nuts 线程写道:
) v8 J' X7 c, p  w使代码清晰的那个。
) V1 w& M, @" ~2 w: G# m& h假如要查元素 x,我通常会写) G3 W* Y/ y" y* M3 u# |7 c
len(s) > x,即使 x == 0,但如果我关心的话7 H6 f2 a* U8 u* E5 Y
倾向于写 s == “”。5 ^; ~! D5 Z$ i* v; H( d
可以合理地假设成熟的编译器会将
9 P% i" Y3 K5 j3 llen(s) == 0 和 s == “”编译成相同的高效代码。
% [9 m7 n3 p6 q! S0 R2 Z4 A" o$ k9 ~7 n, p
让代码清晰。
. |/ n/ a! t& h' Z, b; N正如答案所指出的,Go 编译器在两种情况下生成相同的代码:
: C# v- y* M1 W/ ~" ~  Z0 q截至目前,Go 编译器在两种情况下都会生成相同的代码,所以这是一个品味问题。GCCGo 确实生成了不同的代码,但很少有人使用它,所以我不担心。: T: I1 c6 B9 U
https://godbolt.org/z/fib1x1
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则