Maison  >  Article  >  développement back-end  >  Le package strconv, un package d'outils de conversion de type en langage Go

Le package strconv, un package d'outils de conversion de type en langage Go

Go语言进阶学习
Go语言进阶学习avant
2023-07-21 16:06:19837parcourir
Cette fois, nous allons apprendre une conversion de type boîte à outilsstrconv en langage Go.

Je ne sais pas si vous y avez pensé.

In Go, Comment convertir la chaîne 100 en nombre 100.

Vous aimez ça ?

func main() {
    var score = "100"
    i := int(score)
    fmt.Printf(i)
}

Non, non, non, regardez les résultats de l'exécution.

Le package strconv, un package d'outils de conversion de type en langage Go

Une erreur a été signalée, indiquant que la conversion n'est pas si simple et grossière ! ! !


chaîne en int (en utilisant Atoi)

code

func main() {
    //string 100
    var scoreStr = "100"
    fmt.Printf("%v,%T\n", scoreStr, scoreStr) //100,string
    score, err := strconv.Atoi(scoreStr)
    //转换失败
    if err != nil {
        panic(err)
}
    fmt.Printf("%v,%T\n", score, score)
}

résultat d'exécution

Le package strconv, un package d'outils de conversion de type en langage Go

Vous constaterez qu'une fois la conversion réussie, devient int type.


int转string(用Itoa)

代码

func main() {
    //int 100
    var scoreInt = 100
    fmt.Printf("%v,%T\n", scoreInt, scoreInt) //100,string
    score  := strconv.Itoa(scoreInt)
    fmt.Printf("%v,%T\n", score, score)
}

执行结果

Le package strconv, un package d'outils de conversion de type en langage Go

注:在Go中,只能通过上述两种方式进行string -> intint -> string


strconv.Parse转换

strconvstrconvParse相关方法,也是讲string类型转换为其他类型,但是相比之下。

strconvParse的多样性会多一点。

strconv.ParseBool()

这个方法,是将字符串的Bool类型,转成真正的BoolParse

🎜相关方法,也是讲string类型转换为其他类型,但是相比之下。🎜🎜

🎜strconv🎜🎜的🎜🎜🎜strconv.ParseBool()🎜<p cid="n27" mdtype="paragraph" style="box-sizing: border-box;line -hauteur : hériter ; orphelins : 4 ; marge supérieure : 0,8 em ; marge inférieure : 0,8 em ; espace blanc : pré-enveloppement ; famille de polices : « Open Sans », « Clear Sans », « Helvetica Neue », Helvetica, Arial, sans-serif ; taille de la police : 16 px ; var(--monospace);alignement vertical : initial;largeur de bordure : 1px;style de bordure : solide;couleur de bordure : rgb(231, 234, 237);couleur d'arrière-plan : rgb(243, 244, 244) ;border-radius : 3px;padding-right : 2px;padding-left : 2px;font-size : 0.9em;">Bool</p>🎜🎜类型,转成真正的🎜🎜<span md-inline="strong" style="box-sizing: border-box;"><strong style="box-sizing: border-box;">示例代码</strong></span>

func main() {
    var tString = "true"//可以是 1,0,t,f,T,F,true,false,True,False,TRUE,FALSE
    fmt.Printf("%T,%v\n", tString, tString)
    tBool, err := strconv.ParseBool(tString)
    if err != nil {
        panic(err)
}
    fmt.Printf("%T,%v\n", tBool, tBool)
}

执行结果

Le package strconv, un package d'outils de conversion de type en langage Go

成功将字符串true转成Bool true

strconv.ParseInt()

这个,就很简单了,跟strconv.Atoi()基本一样。

<span md-inline="strong" style="box-sizing: border-box;"><strong style="box-sizing: border-box;">示例代码</strong></span>

func main() {
   var tString = "666"
   fmt.Printf("%T,%v\n", tString, tString)
   tInt, err := strconv.ParseInt(tString,10,64)
   if err != nil {
      panic(err)
   }
   fmt.Printf("%T,%v\n", tInt, tInt)
}

执行结果

Le package strconv, un package d'outils de conversion de type en langage Go

第二个参数10和第三个参数64的意思

Peut-être que vous êtes comme moi et que vous n'avez pas compris la signification du deuxième paramètre 10 et du troisième paramètre 64 au début.

Mais vous comprendrez peut-être l'image ci-dessous.

Le package strconv, un package d'outils de conversion de type en langage Go

Comprenez-le. Dans des circonstances normales, écrivez simplement le code ci-dessus Il est initialement transféré int, pourquoi pensez-vous autant ! ! !

strconv.parseUint()

Comme ci-dessus, mais cela ne peut convertir que des nombres positifs, pas des nombres négatifs.

strconv.ParseFloat()

Comme vous pouvez le voir d'après le nom, il s'agit de convertir un nombre à virgule flottante de chaîne en un vrai nombre à virgule flottante.

<span md-inline="strong" style="box-sizing: border-box;"><strong style="box-sizing: border-box;">示例代码</strong></span>

func main() {
    var tString = "3.1415"
    fmt.Printf("%T,%v\n", tString, tString)
    tFloat, err := strconv.ParseFloat(tString,64)
    if err != nil {
        panic(err)
}
    fmt.Printf("%T,%v\n", tFloat, tFloat)
}

第二个参数64,同上,也是因为返回的就是float64,所以容量也得是64

执行结果

Le package strconv, un package d'outils de conversion de type en langage Go


strconv.Format转换

这个和strconv.Parse是相反的,是将int/float/bool等 -> string的一个过程。

但是我总感觉有点脱裤子放屁的感觉,既然官方提供了,就随便看看叭!!!

这里我就使用简述的代码来写的。

func main() {
    a := strconv.FormatBool(true)
    //E表示十进制,
    b := strconv.FormatFloat(3.1415, &#39;E&#39;, -1, 64)
    c := strconv.FormatInt(666, 10)
    fmt.Printf("%v,%T\n",a,a)
    fmt.Printf("%v,%T\n",b,b)
    fmt.Printf("%v,%T\n",c,c)
}

执行结果

Le package strconv, un package d'outils de conversion de type en langage Go


总结

其实这次我们的重点主要是前俩,string - > int(用Atoi)int -> string(用Itoa)

其他的主要分为strconv.Parse系列和strconv.Format系列。

Relativement parlantParse系列可能会用的更多一点,Format la série peut être utilisée davantage, Format

Il n'y a pas beaucoup d'utilisations associées, comprenez-le simplement ! 🎜🎜🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer