programing

Go에서 int 값을 문자열로 변환하려면 어떻게 해야 합니까?

abcjava 2023. 4. 16. 14:16
반응형

Go에서 int 값을 문자열로 변환하려면 어떻게 해야 합니까?

i := 123
s := string(i) 

s는 'E'이지만 내가 원하는 것은 '123'이다.

'123'을 받는 방법을 알려주세요.

Java에서는 다음과 같은 작업을 수행할 수 있습니다.

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

제가 어떻게.concat바둑에 두 줄이요?

패키지 사용Itoa기능.

예를 들어 다음과 같습니다.

package main

import (
    "strconv"
    "fmt"
)

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

스트링의 조합은 다음과 같이 간단하게 할 수 있습니다.+'그것들을 사용하거나, 또는 '그것들'을 사용하여Join패키지의 기능.

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

특정 유형의 값을 알고 있는 경우 해당 포맷터를 사용합니다.%d위해서int

상세정보 - fmt

fmt.Sprintf,strconv.Itoa그리고.strconv.FormatInt그 일을 할 수 있을 거야그렇지만Sprintf패키지를 사용합니다.reflect오브젝트를 1개 더 할당하기 때문에 효율적인 선택이 아닙니다.

여기에 이미지 설명 입력

을 주목하는 것은 흥미롭다.strconv.Itoa의 줄임말이다

func FormatInt(i int64, base int) string

베이스 10으로

예:

strconv.Itoa(123)

와 동등하다

strconv.FormatInt(int64(123), 10)

fmt를 사용할 수 있습니다.Sprintf 또는 strconv.Format Float

예를들면

package main

import (
    "fmt"
)

func main() {
    val := 14.7
    s := fmt.Sprintf("%f", val)
    fmt.Println(s)
}

이 경우 둘 다strconv그리고.fmt.Sprintf같은 일을 하지만 그것을 사용한다.strconv패키지의Itoa기능이 최선의 선택입니다.왜냐하면fmt.Sprintf변환 중에 개체를 하나 더 할당합니다.

양쪽의 nenchmark 결과를 체크하다 벤치마크 체크는 이쪽:https://gist.github.com/evalphobia/caee1602969a640a4530

예를 들면, https://play.golang.org/p/hlaz_rMa0D 를 참조해 주세요.

변환중int64:

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

fmt.Println(str)
// Prints "32"

다른 옵션:

package main
import "fmt"

func main() {
   n := 123
   s := fmt.Sprint(n)
   fmt.Println(s == "123")
}

https://golang.org/pkg/fmt#Sprint

좋아, 대부분 좋은 걸 보여줬지이렇게 하자.

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

언급URL : https://stackoverflow.com/questions/10105935/how-to-convert-an-int-value-to-string-in-go

반응형