i := 123
s := string(i)
s es 'E', pero lo que quiero es "123"
Por favor, dime cómo puedo obtener "123".
Y en Java, puedo hacer de esta manera:
String s = "ab" + "c" // s is "abc"
¿Cómo puedo concat
dos cadenas en Go?
i := 123
s := string(i)
s es 'E', pero lo que quiero es "123"
Por favor, dime cómo puedo obtener "123".
Y en Java, puedo hacer de esta manera:
String s = "ab" + "c" // s is "abc"
¿Cómo puedo concat
dos cadenas en Go?
Respuestas:
Usa el strconv
paqueteItoa
función .
Por ejemplo:
package main
import (
"strconv"
"fmt"
)
func main() {
t := strconv.Itoa(123)
fmt.Println(t)
}
Puede concatenar cadenas simplemente ingiriéndolas +
o utilizando la Join
función del strings
paquete.
fmt.Sprintf("%v",value);
Si conoce el tipo específico de valor, utilice el formateador correspondiente, por ejemplo, %d
paraint
Más información - fmt
%d
para int - this
Es interesante notar que strconv.Itoa
es una forma abreviada de
func FormatInt(i int64, base int) string
con base 10
Por ejemplo:
strconv.Itoa(123)
es equivalente a
strconv.FormatInt(int64(123), 10)
Puedes usar fmt.Sprintf
Ver http://play.golang.org/p/bXb1vjYbyc por ejemplo.
En este caso tanto strconv
y fmt.Sprintf
hacer el mismo trabajo, pero utilizando el strconv
del paquete de Itoa
función es la mejor opción, ya que fmt.Sprintf
asignar un objeto más durante la conversión.
consulte el punto de referencia aquí: https://gist.github.com/evalphobia/caee1602969a640a4530
ver https://play.golang.org/p/hlaz_rMa0D por ejemplo.
fmt.Sprintf
y strconv.iota
son similares en términos de facilidad de uso y muestran los datos anteriores iota a ser más rápido con menor impacto GC, parece que iota
se debe utilizar, en general, cuando un solo número entero necesidades de conversión.
Convertir int64
:
n := int64(32)
str := strconv.FormatInt(n, 10)
fmt.Println(str)
// Prints "32"
ok, la mayoría de ellos te han mostrado algo bueno. Déjame darte esto:
// 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 ""
}
}
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)
}