建议将基本数据类型值转换为字符串的方法

时间:2018-02-08 06:05:46

标签: string go

问题

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

解决方案

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

方法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?

1 个答案:

答案 0 :(得分:1)

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

还有更多方法,例如fmt.Sprintf("%d", 10)strconv.Append*家庭。虽然fmt.Sprintf非常灵活和可读,但strconv.Itoa是一种便利功能,速度更快,而strconv.Append系列产生的垃圾比其他系列少。

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

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

这是错误的,因为有时候使用fmt可能会更清楚,特别是如果你还需要它,而且两者(strvonv.Itoa和fmt.Sprintf)产生的额外垃圾太多了。

如果转换不在内部循环或关键执行路径中:执行您认为合适的任何内容并生成一致且可读的代码。所以答案只是基于意见。