Go - 基本数据类型和其字符串表示之间转换
生活随笔
收集整理的這篇文章主要介紹了
Go - 基本数据类型和其字符串表示之间转换
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 基本數據類型和其字符串表示之間轉換
基本類型的值,都有一個字符串表示,如數字類型值
1字符串表示為"1",字符的編碼為Unicode或者UTF-8,數字的編碼是int,底層存儲的數據格式本質上不一樣,基本類型的轉換本質上只是文法語義上的轉化
1.1 Go 語言基本類型
- 整數 : 有符號
int int8 int16 int32 int64無符號:uint uint8 uint16 uint32 uint64 - 小數:
float32 flat63 - 字符串:
string
1.2 轉換過程中可能得錯誤
基本數據類型到字符串表示的轉換,不會出錯,但字符表示到基本類型的轉換可能會有以下錯誤
- 超出目標類型的表示范圍
package main
import (
"fmt"
"strconv"
)
func main() {
numStr := "400"
// 400 數字值已經超出int8(-128, 127)類型表示的范圍
num, err := strconv.ParseInt(numStr, 10, 8)
if err != nil {
fmt.Println(err)
return
}
fmt.Println("conv result:", num)
}
// 輸出:strconv.ParseInt: parsing "400": value out of range
- 不符合目標類型語法
package main
import (
"fmt"
"strconv"
)
func main() {
numStr := "xx"
// xx字符串值無法表示為對應的整數值
num, err := strconv.ParseInt(numStr, 10, 8)
if err != nil {
fmt.Println(err)
return
}
fmt.Println("conv result:", num)
}
// 輸出:strconv.ParseInt: parsing "400": value out of range
2. 轉換
- 字符串與帶引號之間轉化
package main
import (
"fmt"
"strconv"
)
func main() {
name := "dream_fish n"
// 添加上引號
fmt.Println("result:", strconv.Quote(name))
// 去除引號
school := `"University"`
school_, err := strconv.Unquote(school)
if err != nil {
fmt.Println("err:", err)
return
}
fmt.Println("result:", school_)
}
- 字符串與布爾類型之間的轉換
字符串轉
bool類型
package main
import (
"fmt"
"strconv"
)
func main() {
// 包含所有可以轉bool類型的值
boolStringValues := []string{"1", "0", "t", "f", "true", "false", "True", "False"}
// 進行轉換
for _, b := range boolStringValues {
result, err := strconv.ParseBool(b)
if err != nil {
fmt.Printf("parse value: %s err:%s\n", b, err)
continue
}
fmt.Printf("parse value: %s err:%s\n", b, result)
}
}
bool類型轉字符串
package main
import (
"fmt"
"strconv"
)
func main() {
// 包含布爾類型的值
boolValues := []bool{false, true}
// 進行轉換
for _, b := range boolValues {
result := strconv.Quote(strconv.FormatBool(b))
fmt.Printf("format value: %t err:%s\n", b, result)
}
}
- 數值與字符串之間的轉換
字符串轉數值
package main
import (
"fmt"
"strconv"
)
func main() {
// 轉換為 int8類型
int8String := "122"
// 第一個參數是需要轉換的字符串,第二個參數是int類型的進制,第三個參數是bit位數
intNum, err := strconv.ParseInt(int8String, 10, 8)
if err != nil {
fmt.Println("err:", err)
}
fmt.Println("int8 num:", intNum)
// 字符串正整數
uintNum, err := strconv.ParseUint(int8String, 10, 8)
if err != nil {
fmt.Println("err:", err)
}
fmt.Println("uint8 num:", uintNum)
// 字符串轉浮點數
floatNumStr := "67.9"
floatNum, err := strconv.ParseFloat(floatNumStr, 64)
if err != nil {
fmt.Println("err:", err)
}
fmt.Println("float64 num:", floatNum)
}
數值轉字符串
-
strconv包的Format系列方式
package main
import (
"fmt"
"strconv"
)
func main() {
// 整肅轉字符串
intNum := int64(8)
fmt.Printf("%s\n", strconv.FormatInt(intNum, 10))
// 浮點數轉字符串
result := strconv.FormatFloat(88.9, 'f', 2, 64)
fmt.Println("float to str:", result)
// bool類型轉字符串
fmt.Println("bool to str:", strconv.FormatBool(true))
// 無符號整肅
fmt.Println("uint to str", strconv.FormatUint(111, 10))
}
-
fmt包Sprint系列方式
package main
import (
"fmt"
)
func main() {
// 整肅轉字符串
intValue := int64(8)
boolValue := true
floatValue := 44.2
uintValue := 33
result := fmt.Sprintf("int: %d, bool: %t, float: %f, unit: %d", intValue, boolValue, floatValue, uintValue)
fmt.Printf(result)
}
-
strconv包的Atoi與Itoa方法,其實是ParseInt(s, 10, 0)FormatInt(i, 10)的簡寫
package main
import (
"fmt"
"strconv"
)
func main() {
// int類型值轉換為字符串
result := strconv.Itoa(100)
fmt.Println(result)
// 字符串值換換為int類型的值
intString := "200"
intValue, err := strconv.Atoi(intString)
if err != nil {
panic(err)
}
fmt.Println(intValue)
}
3. Append系方法
添加轉成基本類型轉換成字符串表示的
package main
import (
"fmt"
"strconv"
)
func main() {
// 基礎數據類型
intValue := int64(100)
boolValue := true
floatValue := 5.4
buf := []byte("result:")
resultValue := strconv.AppendFloat(buf, floatValue, 'f', 2, 64)
fmt.Println(string(resultValue))
resultValue = strconv.AppendInt(buf, intValue, 10)
fmt.Println(string(resultValue))
resultValue = strconv.AppendBool(buf, boolValue)
fmt.Println(string(resultValue))
}
4. 總結
-
Parse系列方法,將字符串表示嘗試轉換為基礎類型,Formation系列方法將基本類型轉換為字符串表示,Append方法是一個將基本類型的字符串表示添加到字節切片的快捷方式
總結
以上是生活随笔為你收集整理的Go - 基本数据类型和其字符串表示之间转换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 崩坏星穹铁道异宠拾遗照顾攻略
- 下一篇: Gin 框架之jwt 介绍与基本使用