類型轉換用於將一種數據類型的變量轉換爲另一種類型的變量。函數
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