将基本类型值(例如int
或bool
)转换为其字符串表示形式。
在阅读链接资源后,我发现主要有2种方法可以解决这个问题:
方法1 :使用strconv
包。
strconv.Itoa(10)
strconv.FormatBool(false)
方法2 :使用fmt.Sprintf()
方法
fmt.Sprintf("%v", 10)
fmt.Sprintf("%v", false)
我想知道可以遵循的一般准则,以便在这些替代方案之间做出选择。比较(性能,速度和内存)在讨论中也可能有用。
答案 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)产生的额外垃圾太多了。
如果转换不在内部循环或关键执行路径中:执行您认为合适的任何内容并生成一致且可读的代码。所以答案只是基于意见。