胖鸭 2013-09-03 14:02
浏览 1637
已采纳

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

Which method is best (more idomatic) for testing non-empty strings (in Go)?

if len(mystring) > 0 { }

Or:

if mystring != "" { }

Or something else?

转载于:https://stackoverflow.com/questions/18594330/what-is-the-best-way-to-test-for-an-empty-string-in-go

  • 写回答

6条回答 默认 最新

  • lrony* 2013-09-03 14:45
    关注

    Both styles are used within the Go's standard libraries.

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

    can be found in the strconv package: http://golang.org/src/pkg/strconv/atoi.go

    if s != "" { ... }
    

    can be found in the encoding/json package: http://golang.org/src/pkg/encoding/json/encode.go

    Both are idiomatic and are clear enough. It is more a matter of personal taste and about clarity.

    Russ Cox writes in a golang-nuts thread:

    The one that makes the code clear.
    If I'm about to look at element x I typically write
    len(s) > x, even for x == 0, but if I care about
    "is it this specific string" I tend to write s == "".

    It's reasonable to assume that a mature compiler will compile
    len(s) == 0 and s == "" into the same, efficient code.
    Right now 6g etc do compile s == "" into a function call
    while len(s) == 0 is not, but that's been on my to-do list to fix.

    Make the code clear.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)
  • ¥20 怎么在stm32门禁成品上增加查询记录功能