i := 123
s := string(i)
s 'E', ama istediğim "123"
Lütfen "123" e nasıl ulaşacağımı söyle.
Ve Java'da şu şekilde yapabilirim:
String s = "ab" + "c" // s is "abc"
concat
Go'da nasıl iki dize oluşturabilirim?
i := 123
s := string(i)
s 'E', ama istediğim "123"
Lütfen "123" e nasıl ulaşacağımı söyle.
Ve Java'da şu şekilde yapabilirim:
String s = "ab" + "c" // s is "abc"
concat
Go'da nasıl iki dize oluşturabilirim?
Yanıtlar:
strconv
Paketin Itoa
işlevini kullanın .
Örneğin:
package main
import (
"strconv"
"fmt"
)
func main() {
t := strconv.Itoa(123)
fmt.Println(t)
}
Dizeleri basitçe kapatarak +
veya paketin Join
işlevini kullanarak birleştirebilirsiniz strings
.
fmt.Sprintf("%v",value);
Eğer değer belirli tip örneğin ilgili formatlayıcıyı kullanmak biliyorsanız %d
içinint
Daha Fazla Bilgi - FMT
%d
int için - bu
Bu nota ilginç strconv.Itoa
olan steno için
func FormatInt(i int64, base int) string
taban 10 ile
Örneğin:
strconv.Itoa(123)
eşittir
strconv.FormatInt(int64(123), 10)
Fmt.Sprintf kullanabilirsiniz
Örneğin http://play.golang.org/p/bXb1vjYbyc adresine bakın .
Her iki Bu durumda strconv
ve fmt.Sprintf
aynı işi ama kullanarak strconv
paketin Itoa
çünkü işlevini en iyi seçimdir fmt.Sprintf
dönüştürme sırasında bir kez daha nesne tahsis.
karşılaştırmalı değerlendirmeyi buradan kontrol edin: https://gist.github.com/evalphobia/caee1602969a640a4530
fmt.Sprintf
ve strconv.iota
kullanım kolaylığı ve iyota hızlı düşük GC etki olmak Yukarıdaki veriler gösterir açısından benzer olan, görünür iota
tek bir tam sayı dönüştürücü gereken zaman, genel olarak kullanılmalıdır.
Dönüştürme int64
:
n := int64(32)
str := strconv.FormatInt(n, 10)
fmt.Println(str)
// Prints "32"
tamam, çoğu size iyi bir şey gösterdi. Size şunu vereyim:
// 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)
}