web-dev-qa-db-ja.com

Goでint値を文字列に変換する方法

i := 123
s := string(i) 

sは 'E'ですが、欲しいのは "123"です。

どうやって "123"が得られるのか教えてください。

そしてJavaでは、私はこのようにすることができます:

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

goで2つの文字列をconcatするにはどうすればいいですか?

396
hardPass

strconv パッケージのItoa関数を使用してください。

例えば:

package main

import (
    "strconv"
    "fmt"
)

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

文字列を連結するには、単に_ +を結合するか、 Join パッケージのstrings関数を使用します。

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

特定のタイプの値がわかっている場合は、対応するフォーマッターを使用してください。例えば、intには%d

詳細情報 - fmt

122
Jasmeet Singh

strconv.Itoa省略形 であることに注意するのは興味深いです。

func FormatInt(i int64, base int) string

ベース10付き

例えば:

strconv.Itoa(123)

と同等です

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

fmt.Sprintfstrconv.Itoaおよびstrconv.FormatIntがその仕事をします。しかしSprintfはパッケージreflectを使い、それはもう一つのオブジェクトを割り当てるので、それは良い選択ではありません。

enter image description here

34
Bryce

fmt.Sprintf を使用できます。

例えば http://play.golang.org/p/bXb1vjYbyc を参照してください。

34
lazy1

この場合、strconvfmt.Sprintfは同じ仕事をしますが、fmt.Sprintfは変換中にもう1つオブジェクトを割り当てるので、strconvパッケージのItoa関数を使用するのが最良の選択です。

check the nenchmark result of both ここでベンチマークをチェックしてください: https://Gist.github.com/evalphobia/caee1602969a640a4530

たとえば https://play.golang.org/p/hlaz_rMa0D を参照してください。

16
manigandand

int64を変換する:

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

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

わかりました、それらのほとんどはあなたに良い何かを見せています。あなたにこれをあげましょう:

// 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