当前位置: 首页 > 面试题库 >

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

夹谷晋
2023-03-14
问题内容

哪种方法最适合(更理想的)用于测试非空字符串(在Go中)?

if len(mystring) > 0 { }

要么:

if mystring != "" { }

或者是其他东西?


问题答案:

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

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

可以在以下strconv软件包中找到:http :
//golang.org/src/pkg/strconv/atoi.go

if s != "" { ... }

可以在以下encoding/json包中找到:http
:
//golang.org/src/pkg/encoding/json/encode.go

两者都是惯用的,而且很清楚。这更多的是个人品味和清晰度。

拉斯·考克斯(Russ Cox)在golang-
nuts线程中写道:

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

可以合理地假设成熟的编译器会将
len == 0和s ==“” 编译为相同的高效代码。

使代码清晰。

正如Timmmm的回答所指出的,Go编译器在两种情况下的确生成相同的代码。



 类似资料:
  • 对于测试非空字符串(在Go中),哪种方法是最好的(更idomatic)?

  • 问题内容: 我今天一直在搞递归。通常,编程技术使用不足。 我着手递归地反转一个字符串。这是我想出的: 我的问题:Java中有更好的方法吗? 问题答案: 最好的方法是不使用递归。这些内容通常用于教学生递归概念,而不是实际的最佳实践。因此,您的操作方式就很好。只是不要在Java应用中将递归用于现实应用中的此类内容;) PS。除了我刚才所说的,我将选择递归函数的基本情况:

  • 问题内容: 我在尝试搜索字符串中的子字符串时遇到问题。该子字符串可能在字符串中也可能不在字符串中。 我知道是否可以完成的两种方法是: 正则表达式 但是,还有其他“优化”方式吗?你会怎么做? Ruby可以提供更好的答案吗?由于我们使用jRuby,因此答案可以是Ruby或Java。 问题答案: 在Ruby中,使用方法: 返回。

  • 问题内容: 将数字转换为字符串的“最佳”方法是什么(就速度优势,清晰度优势,内存优势等而言)? 一些例子: 问题答案: 像这样: 实际上,即使我通常是为了简单方便而这样做,但 对于原始速度而言 ,似乎出现了1000多次迭代,但 对于 根据上述JSPerf测试最快: 应该注意的是,当您认为速度差异可以在0.1秒内进行1百万次转换时,速度差异并不是太大。 更新: 速度因浏览器而异。在Chrome中,根

  • 问题内容: 我在Python中有一个Unicode字符串,我想删除所有的重音符号(变音符号)。 我在网上发现了一种用Java实现此目的的优雅方法: 将Unicode字符串转换为长规范化格式(带有单独的字母和变音符号) 删除所有Unicode类型为“变音符号”的字符。 我是否需要安装pyICU之类的库,还是仅使用python标准库就可以?那python 3呢? 重要说明:我想避免使用带有重音符号到非

  • 问题内容: 类似于[a-zA-Z0-9]字符串: na1dopW129T0anN28udaZ 或十六进制字符串: 8c6f78ac23b4a7b8c0182d 长期以来,我的意思是2K和更多字符。 问题答案: 这在我的盒子上大约有200MBps。有明显的改进空间。 您只需要生成所需的字符串即可。显然,您可以在途中或其他情况下调整字符集。 这个模型的好处是,它只是一个,因此您可以使用它制作任何东西。