i := 123
s := string(i)
s是'E',但我想要的是“123”
请告诉我如何获得“123”。
在Java中,我可以这样做:
String s = "ab" + "c" // s is "abc"
如何在Go中使用concat
两个字符串?
答案 0 :(得分:644)
使用strconv
包的Itoa
功能。
例如:
package main
import (
"strconv"
"fmt"
)
func main() {
t := strconv.Itoa(123)
fmt.Println(t)
}
您可以简单地通过+
'或使用strings
包的Join
函数来连接字符串。
答案 1 :(得分:125)
答案 2 :(得分:41)
值得注意的是strconv.Itoa
为shorthand
func FormatInt(i int64, base int) string
以10为基础
例如:
strconv.Itoa(123)
相当于
strconv.FormatInt(int64(123), 10)
答案 3 :(得分:34)
您可以使用fmt.Sprintf
答案 4 :(得分:34)
select zs.old,o.Number,z.Id,z.Name,zs.Timefirst, (select case when zs.timefirst in (select max(Timefirst) from zs group by zs.old ,zs.id) then zs.timefirst else '' end ) as TimeLast from zs join z on zs.Id = z.Id join o on zs.old=o.old order by zs.old,zs.Timefirst
,fmt.Sprintf
和strconv.Itoa
将完成这项工作。但是strconv.FormatInt
将使用包Sprintf
,它将再分配一个对象,因此它不是一个好的选择。
答案 5 :(得分:17)
在这种情况下,strconv
和fmt.Sprintf
执行相同的工作,但使用strconv
包的Itoa
函数是最佳选择,因为fmt.Sprintf
分配了一个转换期间更多对象。
在这里检查基准:https://gist.github.com/evalphobia/caee1602969a640a4530
答案 6 :(得分:4)
转换int64
:
n := int64(32)
str := strconv.FormatInt(n, 10)
fmt.Println(str)
// Prints "32"
答案 7 :(得分:1)
好的,大多数都给你看了一些好东西。 让我给你这个:
// ToString Change arg to string
func ToString(arg interface{}, timeFormat ...string) string {
if len(timeFormat) > 1 {
log.SetFlags(log.Llongfile | log.LstdFlags)
log.Println(errors.New(fmt.Sprintf("timeFormat's length should be one")))
}
var tmp = reflect.Indirect(reflect.ValueOf(arg)).Interface()
switch v := tmp.(type) {
case int:
return strconv.Itoa(v)
case int8:
return strconv.FormatInt(int64(v), 10)
case int16:
return strconv.FormatInt(int64(v), 10)
case int32:
return strconv.FormatInt(int64(v), 10)
case int64:
return strconv.FormatInt(v, 10)
case string:
return v
case float32:
return strconv.FormatFloat(float64(v), 'f', -1, 32)
case float64:
return strconv.FormatFloat(v, 'f', -1, 64)
case time.Time:
if len(timeFormat) == 1 {
return v.Format(timeFormat[0])
}
return v.Format("2006-01-02 15:04:05")
case jsoncrack.Time:
if len(timeFormat) == 1 {
return v.Time().Format(timeFormat[0])
}
return v.Time().Format("2006-01-02 15:04:05")
case fmt.Stringer:
return v.String()
case reflect.Value:
return ToString(v.Interface(), timeFormat...)
default:
return ""
}
}
答案 8 :(得分:0)
package main
import (
"fmt"
"strconv"
)
func main(){
//First question: how to get int string?
intValue := 123
// keeping it in separate variable :
strValue := strconv.Itoa(intValue)
fmt.Println(strValue)
//Second question: how to concat two strings?
firstStr := "ab"
secondStr := "c"
s := firstStr + secondStr
fmt.Println(s)
}