go语言中int转string的三种方式

1,689 views
Skip to first unread message

南海

unread,
Sep 26, 2012, 3:12:10 AM9/26/12
to golang-china
go语言中int转string的三种方式,有什么不同,有什么优缺点?

第一种: strconv.Itoa(10)

第二种: fmt.Sprintf("%d", 10)

第三种: fmt.Sprint(10)

David Day

unread,
Sep 26, 2012, 3:42:15 AM9/26/12
to golang...@googlegroups.com
后两种和string转int有什么关系吗?

2012/9/26 南海 <viney...@gmail.com>

--
官网: http://golang-china.org/
IRC: irc.freenode.net #golang-china
@golangchina

南海

unread,
Sep 26, 2012, 3:52:31 AM9/26/12
to golang...@googlegroups.com
是int转string

2012/9/26 David Day <dave...@gmail.com>

Xing Xing

unread,
Sep 26, 2012, 3:55:22 AM9/26/12
to golang...@googlegroups.com
于 Wed, 26 Sep 2012 15:12:10 +0800
南海 <viney...@gmail.com> 写道:

> go语言中int转string的三种方式,有什么不同,有什么优缺点?
>
> 第一种: strconv.Itoa(10)

从代码里看,这个方法是通过计算 ASCII 码的方式将数字转换成 byte
字符,然后拼接成数组。

>
> 第二种: fmt.Sprintf("%d", 10)
>
> 第三种: fmt.Sprint(10)

这两个本质上是没区别的,代码中都使用到了反射。

>
> http://play.golang.org/p/QFxUVkeJzU
>

所以,如果单纯从性能来说,strconv 会好一些。但是 fmt 更加通用和方便。

南海

unread,
Sep 26, 2012, 4:15:35 AM9/26/12
to golang...@googlegroups.com
我觉得strconv还有一个好处,type assert的作用!
第一种你只能输入int类型
第二、第三种类型没有规定

第二种、第三种用起来非常的简洁,当你还需要转换uint、uint64、int64等等一些类型的时候。
我现在项目中纠结用那一个比较好!

shiwei xu

unread,
Sep 26, 2012, 7:23:54 AM9/26/12
to golang...@googlegroups.com
我能够用第一种的情况下不会用其他的。原因很简单,作为c/c++程序员天生的性能癖。
--
许式伟

un lobe

unread,
Jul 20, 2016, 5:54:07 AM7/20/16
to Golang-China
能用第一种,绝不用第二、三种,反射太浪费了。

在 2012年9月26日星期三 UTC+8下午7:23:54,xushiwei写道:
Reply all
Reply to author
Forward
0 new messages