string - 将基本数据类型值转换为字符串的推荐方法

标签 string go

<分区>

问题

将基本类型值(例如 intbool)转换为其字符串表示形式。

解决方案

阅读链接资源后,我发现主要有两种方法可以解决该问题:

方法 1:使用 strconv包。

strconv.Itoa(10)
strconv.FormatBool(false)

方法 2:使用 fmt.Sprintf()方法

fmt.Sprintf("%v", 10)
fmt.Sprintf("%v", false)

我想知道在这些备选方案之间进行选择时可以遵循的一般准则。比较(性能,速度和内存)也可能对讨论有用。

读物

How to convert a bool to a string in Go?

How to convert an int value to string in Go?

最佳答案

这实际上取决于很多因素。

还有更多方法,例如fmt.Sprintf("%d", 10)strconv.Append* 系列。虽然 fmt.Sprintf 非常灵活且可读性强,但 strconv.Itoa 是一个方便的函数并且速度更快,而 strconv.Append 系列产生的垃圾比其他系列少。

您应该关注可读性而不是一般规则。将单个 int 转换为字符串最好使用 strvonv.Itoa 完成。但是,当您已经导入 fmt 时导入 strconv 只是为了使用 Itoa 可能有点矫枉过正。如果转换发生在垃圾收集可能成为问题的内部循环中,您可能需要使用 strcnv.Append-stuff。可以使用 if 将 bool 转换为字符串,这可能允许轻松本地化(上述解决方案均未提供)。包 strconv 不包含格式化功能,例如complex128 或指针,因此您必须使用包 fmt。

这是一个简单但错误的答案:“要将 int 转换为 string,请使用 strconv.Itoa,因为它简短、清晰且快速”。

这是错误的,因为有时使用 fmt 可能更清晰,尤其是当您仍然需要它时,有时两者(strvonv.Itoa 和 fmt.Sprintf)产生的额外垃圾太高了。

如果转换不在内部循环或关键执行路径上:做任何你觉得舒服的事情,并产生一致和可读的代码。所以答案只是基于意见。

关于string - 将基本数据类型值转换为字符串的推荐方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48678661/

相关文章:

java - 将字符串转换为数字的输出不符合预期

c# - 如何将全名字符串分成名字和姓氏字符串?

c# - 使用 Sha256 散列字符串

Go - 将表示二进制数的字符串转换为 int

json - 在 Golang 中解析转义的 json 字符串

c - C 中的指针从内存中删除

c++ - 如何在 C++ 中的同一函数中使用字符串和 double

c++ string* 指针在控制台中没有正确打印

arrays - Golang,以下是做什么的[]

go - select是否尝试在默认值之前发送?