it-swarm.com.de

Wie konvertiere ich einen Int-Wert in einen String in Go?

i := 123
s := string(i) 

s ist 'E', aber was ich will ist "123"

Bitte sagen Sie mir, wie ich "123" bekommen kann.

Und in Java kann ich auf folgende Weise vorgehen:

String s = "ab" + "c"  // s is "abc"

wie kann ich concat zwei Zeichenfolgen in Go?

426
hardPass

Verwenden Sie die Funktion strconv des Pakets Itoa.

Zum Beispiel:

package main

import (
    "strconv"
    "fmt"
)

func main() {
    t := strconv.Itoa(123)
    fmt.Println(t)
}

Sie können Zeichenfolgen einfach durch + 'setzen oder indem Sie die Funktion Join des Pakets strings verwenden.

684
fmt.Sprintf("%v",value);

Wenn Sie den spezifischen Werttyp kennen, verwenden Sie den entsprechenden Formatierer, z. B. %d für int.

Weitere Infos - fmt

127
Jasmeet Singh

Es ist interessant festzustellen, dass strconv.ItoaKurzform für ist

func FormatInt(i int64, base int) string

mit Sockel 10

Zum Beispiel:

strconv.Itoa(123)

ist äquivalent zu

strconv.FormatInt(int64(123), 10)
43
kgthegreat

fmt.Sprintf, strconv.Itoa und strconv.FormatInt erledigen den Job. Aber Sprintf verwendet das Paket reflect und ordnet ein weiteres Objekt zu, daher ist dies keine gute Wahl.

enter image description here

36
Bryce

Sie können fmt.Sprintf verwenden

Siehe http://play.golang.org/p/bXb1vjYbyc zum Beispiel.

34
lazy1

In diesem Fall erledigen sowohl strconv als auch fmt.Sprintf den gleichen Job, aber die Verwendung der Funktion strconv des Pakets Itoa ist die beste Wahl, da fmt.Sprintf währenddessen ein weiteres Objekt zuweist Umwandlung.

check the nenchmark result of both Überprüfen Sie den Benchmark hier: https://Gist.github.com/evalphobia/caee1602969a640a45

siehe https://play.golang.org/p/hlaz_rMa0D zum Beispiel.

21
manigandand

int64 konvertieren:

n := int64(32)
str := strconv.FormatInt(n, 10)

fmt.Println(str)
// Prints "32"
6
Cae Vecchi

ok, die meisten von ihnen haben dir etwas Gutes gezeigt. Lass mich dir Folgendes geben:

// 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 ""
    }
}
1
fwhez
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)
}
0