Go語言類型轉換

類型轉換用於將一種數據類型的變量轉換爲另一種類型的變量。函數

Go語言類型轉換基本格式以下:
表達式 T(v) 將值 v 轉換爲類型 T 。spa

 

Go語言各類類型轉換及函數的高級用法:
strconv包實現了基本數據類型和其字符串表示的相互轉換。code

 

轉字節

reflect.TypeOf() 查看類型

字符串轉字節orm

package main

import (
    "fmt"
    "reflect"
)

func main() {
    var str string = "oldboy"
    result := []byte(str)
    fmt.Printf("result is %v , result type is %v\n", result, reflect.TypeOf(result))
}

32位整形轉字節blog

package main

import (
    "bytes"
    "encoding/binary"
    "fmt"
    "reflect"
)
// reflect.TypeOf() 查看類型 func main() {
var x int32 x = 100 bytesBuffer := bytes.NewBuffer([]byte{}) binary.Write(bytesBuffer, binary.BigEndian, x) result := bytesBuffer.Bytes() fmt.Printf("result is %v , result type is %v\n", result, reflect.TypeOf(result)) }

轉字符串

字節轉字符串字符串

package main

import (
    "fmt"
    "reflect"
)

func main() {
    var b []byte = []byte{111, 108, 100, 98, 111, 121}
    result := string(b)
    fmt.Printf("result is %v , result type is %v\n", result, reflect.TypeOf(result))
}

整形轉字符串string

 strconv.Itoa(x)it

package main

import (
    "fmt"
    "reflect"
    "strconv"
)

func main() {
    var x int
    x = 100
    result := strconv.Itoa(x)
    fmt.Printf("result is %v , result type is %v\n", result, reflect.TypeOf(result))
}

FormatInt 將 int 型整數 i 轉換爲字符串形式 
base:進位制(2 進制到 36 進制) 大於 10 進制的數,返回值使用小寫字母 ‘a’ 到 ‘z’io

func FormatInt(i int64, base int) string

Itoa 至關於 FormatInt(i, 10)編譯

64位整形轉字符串

package main

import (
    "fmt"
    "reflect"
    "strconv"
)

func main() {
    var i int64
    i = 0x100
    result := strconv.FormatInt(i, 10)
    fmt.Printf("result is %v , result type is %v\n", result, reflect.TypeOf(result))
}

布爾值轉字符串

package main

import (
    "fmt"
    "reflect"
    "strconv"
)

func main() {
    t := strconv.FormatBool(true)
    f := strconv.FormatBool(false)
    fmt.Printf("t is %v , t type is %v\n", t, reflect.TypeOf(t))
    fmt.Printf("f is %v , f type is %v\n", f, reflect.TypeOf(f))
}

浮點數轉字符串

strconv.FormatFloat(f,fmt,prec,bitSize)
f:要轉換的浮點數 
fmt:格式標記(b、e、E、,f、g、G) 
prec:精度(數字部分的長度,不包括指數部分) 
bitSize:指定浮點類型(32:float3二、64:float64)

格式標記: 
‘b’ (-ddddp±ddd,二進制指數) 
‘e’ (-d.dddde±dd,十進制指數) 
‘E’ (-d.ddddE±dd,十進制指數) 
‘f’ (-ddd.dddd,沒有指數) 
‘g’ (‘e’:大指數,’f’:其它狀況) 
‘G’ (‘E’:大指數,’f’:其它狀況)
package main

import (
    "fmt"
    "reflect"
    "strconv"
)

func main() {
    f := 100.12345678901234567890123456789
    result := strconv.FormatFloat(f, 'e', 30, 32)
    fmt.Printf("result is %v , result type is %v\n", result, reflect.TypeOf(result))
}

轉整形

int轉int64

package main

import (
    "fmt"
    "reflect"
)

func main() {
    var x int = 100
    result := int64(x)
    fmt.Printf("result is %v , result type is %v\n", result, reflect.TypeOf(result))
}

字節轉32位整形

package main

import (
    "bytes"
    "encoding/binary"
    "fmt"
    "reflect"
)

func main() {
    b := []byte{0x00, 0x00, 0x03, 0xe8}
    bytesBuffer := bytes.NewBuffer(b)

    var result int32
    binary.Read(bytesBuffer, binary.BigEndian, &result)
    fmt.Printf("result is %v , result type is %v\n", result, reflect.TypeOf(result))
}

轉浮點型

float32轉float64

package main

import (
    "fmt"
    "reflect"
)

func main() {
    var x float32 = 100
    result := float64(x)
    fmt.Printf("result is %v , result type is %v\n", result, reflect.TypeOf(result))
}

整型轉浮點型

package main

import (
    "fmt"
    "reflect"
)

func main() {
    var x int = 100
    result := float32(x)
    fmt.Printf("result is %v , result type is %v\n", result, reflect.TypeOf(result))
}

字符串轉浮點數

strconv.ParseFloat(str,bitSize)
str:要轉換的字符串
bitSize:指定浮點類型(32:float3二、64:float64)
若是 str 是合法的格式,並且接近一個浮點值,
則返回浮點數的四捨五入值(依據 IEEE754 的四捨五入標準)
若是 str 不是合法的格式,則返回「語法錯誤」
若是轉換結果超出 bitSize 範圍,則返回「超出範圍」
package main

import (
    "fmt"
    "reflect"
    "strconv"
)

func main() {
    var str string = "0.12345678901234567890"
    result, _ := strconv.ParseFloat(str, 32)
    fmt.Printf("result is %v , result type is %v\n", result, reflect.TypeOf(result))
}

轉布爾值

字符串轉布爾值

ParseBool 將字符串轉換爲布爾值 
它接受真值:1, t, T, TRUE, true, True 
它接受假值:0, f, F, FALSE, false, False. 
其它任何值都返回一個錯誤
package main

import (
    "fmt"
    "reflect"
    "strconv"
)

func main() {
    result, _ := strconv.ParseBool("1")
    fmt.Printf("result is %v , result type is %v\n", result, reflect.TypeOf(result))
}

注意:Go語言不能將其餘類型當 bool 值使用

package main

func main() {
    a := 100
    if a {
    }
}

編譯錯誤:

./main.go:5:2: non-bool a (type int) used as if condition
相關文章
相關標籤/搜索