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

2024-02-25

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

if len(mystring) > 0 { }

Or:

if mystring != "" { }

或者是其他东西?


这两种样式都在 Go 的标准库中使用。

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

可以在strconv包裹:http://golang.org/src/pkg/strconv/atoi.go http://golang.org/src/pkg/strconv/atoi.go

if s != "" { ... }

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

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

拉斯·考克斯 (Russ Cox) 在一篇文章中写道golang 坚果线程 https://groups.google.com/forum/#!topic/golang-nuts/7Ks1iq2s7FA:

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

可以合理地假设成熟的编译器会编译
len(s) == 0 和 s == "" 到相同的、高效的代码中。
...

让代码清晰。

正如指出的蒂姆的回答 https://stackoverflow.com/a/54804858/694331,Go 编译器在这两种情况下都会生成相同的代码。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • 如何禁用字符代码 178 (0xB2) (²) 、 179 (0xB3) (3) 和 185 (0xB9) (1) 作为数字?

    使用 SWI Prolog 生成数字时 code type X digit 结果是预期的ASCII http www asciitable com 字符代码和 178 0xB2 179 0xB3 185 0xB9 e g code type
  • 用随机数替换 pandas 数据框中的唯一值

    我有一个 pandas 数据框 我想用随机正态数替换一些唯一值 在下面的示例中 要替换的值为 0 import numpy as np import pandas as pd dates pd date range 20160101 per
  • KVO 不起作用:消息已收到但未处理

    我在使用 KVO 时遇到以下错误 它只适用于 UIViewController 的子类吗 Terminating app due to uncaught exception NSInternalInconsistencyException
  • 如何从 Bash 生成 Pusher 身份验证字符串?

    我无法生成要使用的 正确 身份验证字符串 通过curl向Pusher发送消息 这是我的脚本 当然 秘密部分被删掉了 bin bash key my key secret my secret appID my app id timestamp
  • 如何使用 jasmine 测试具有 setTimeout 的函数?

    我需要为具有以下功能的函数编写测试setTimeout 打电话进去 但我找不到我应该怎么做 这是函数 Disables all submit buttons after a submit button is pressed var bloc
  • Jenkins 重新运行设置向导

    刚刚在 Windows 服务器上安装了最新的 Jenkins 将其更改为作为服务运行 但我的登录不再有效 没问题 暂时禁用安全性 但发现我所有的插件都不见了 如何让它重新运行设置向导 正如所见第310期 https github com j
  • 如何处理 Firebase 通知,即 Android 中的通知消息和数据消息

    当用户处于前台和后台时 使用 Xamarin Android 在 firebase 中处理通知消息和数据消息的最佳方法是什么 另外 如何获取通知数据 例如特定通知的文本 PS 我访问过以下线程 但没有一个真正有帮助 当设备屏幕关闭时如何处理
  • 是否可以使用触控板进行手势操作?

    在 Chrome 中的 Macbook Pro 上 在屏幕上滑动两根手指可以前后移动 我该如何禁用此功能 并在 jQuery 或 Javascript 中创建自定义手势 我真正需要知道的是当两个手指放在触控板上时如何检测 我认为这是最好的方
  • Vue js点击获取html5属性

    我正在做一个使用 vuejs 最新版本的项目 在这个项目中 我想在点击事件上获取与 vue 关联的 html5 属性 我的按钮代码是 a href class btn btn info btn xs i class fa fa pencil
  • 将 div 滚动到另一个 div 上

    我有两个高度为 100 的 div 当你滚动时 我希望第二个 div 覆盖其他滚动 而不是向上滚动第一个 div 就像在这个网站上一样 http www endzeit ausstellung de http www endzeit aus
  • docker-compose 中的 Windows 10 绑定安装不起作用

    我正在使用 docker compose 来管理多容器应用程序 其中 1 个容器需要访问主机上目录的内容 根据 docker 和 docker compose 上的各种文档来源 这似乎很简单 但我正在努力让它工作 event process
  • 在 LINQ to SQL 中执行 InsertOnSubmit 时出现 NullReferenceException

    在我的数据库中 我有一个名为 工作人员 当我通过 linq to sql 将其带入我的 net 项目时 会创建一个实体类 StaffMember 现在 我还在我的项目中创建了一个部分类 StaffMember 以添加我在其他顶层使用的额外属
  • 列表等数据结构类型的 Sphinx 文档字符串标准是什么?

    Sphinx 是否有支持的标准来记录不是简单的单个对象的参数或返回值类型 例如 在下面的例子中 arg1 是一个 str arg2 是一个 str 列表 arg3 是一个 str 或 int 如何在 Sphinx 中指定集合或复合类型 或者
  • 绘图中两个 y 轴的一条零线

    该图是使用以下代码生成的 library tidyverse library plotly df lt data frame DEP c ABC DEF GHI VALUE c 100 110 120 LINE c 0 1 0 7 0 9
  • 显示多种形式

    在我的代码中 我有一个主窗体 名为 frmMain 和一个关于框 名为 AboutBox1 我想要发生的是 当用户单击菜单条中的 帮助 菜单 然后单击 关于 时 我希望显示 AboutBox1 表单 我已经研究了如何做到这一点 但是当我尝试
  • PhpStorm 和扩展的 php 定义

    使用代码提示 PHPStorm 可以快速显示函数定义 可以配置它来向我展示该函数使用的更详细示例吗 You can place the cursor text cursor not mouse cursor on any PHP funct
  • 打破嵌套循环[重复]

    这个问题在这里已经有答案了 我的嵌套循环有问题 我有多个帖子 每个帖子都有多个图像 我想从所有帖子中获取总共 5 张图片 所以我使用嵌套循环来获取图像 并希望在数量达到 5 时中断循环 以下代码将返回图像 但似乎不会中断循环 foreach
  • 为什么 R 中的循环很慢?

    我知道循环很慢R我应该尝试以矢量化的方式做事 但为什么 为什么循环很慢并且apply快吗 apply调用几个子函数 这看起来并不快 Update 抱歉 这个问题问得不好 我将矢量化与apply 我的问题应该是 为什么矢量化速度更快 循环并不
  • 获取 Jekyll 中两个日期之间的天数差异

    我想知道杰基尔两个日期之间的天数差异 我怎样才能实现这个目标 capture currentDate site time date Y m d endcapture currentDate capture event date entry
  • 在 Go 中测试空字符串的最佳方法是什么?

    哪种方法最适合测试非空字符串 在 Go 中 if len mystring gt 0 Or if mystring 或者是其他东西 这两种样式都在 Go 的标准库中使用 if len s gt 0 可以在strconv包裹 http gol