Type convert
Type convert 型態轉換
自動類型轉換
顯式類型定義: const b string = "abc"
隱式類型定義: const b = "abc"
var myInt = 123
fmt.Printf("%T %v \n", myInt, myInt) //自動類型轉換 int 123 隱式整數類型轉換
使用並不會感覺到,變量之間沒有隱式類型轉換。但是編譯器可以進行變量和常量之間的隱式類型轉換
package main
import "fmt"
func main() {
var myInt1 int = 123 //將常量 123 的整數型別隱式轉換為 int 型別的值
var myInt2 int = 123.0 //將浮點型別的常量隱式轉換為整數變數
//var myInt3 int = 123.1//這樣是不行的 cannot use 123.1 (untyped float constant) as int value in variable declaration (truncated) compiler TruncatedFloat
var myFloat1 float64 = 1 //在整數型別的常量到 float64 型別的變數之間執行隱式轉換
fmt.Printf("%T %v \n", myInt1, myInt1)//int 123
fmt.Printf("%T %v \n", myInt2, myInt2)//int 123
fmt.Printf("%T %v \n", myFloat1, myFloat1)//float64 1
}強制轉換 T(v) Type conversions
又稱顯式(explicitly)轉換,類型轉換
The expression T(v) converts the value v to the type T.
相同結構struct(忽略struct tag)可以互轉 .
斷言轉換 x.(T) Type assertions
see https://go.dev/ref/spec#Type_assertions
斷言通過判斷變量是否可以轉換成某一個類型
只能在接口上發生 否則運行會報錯:
invalid operation: test (variable of type xxx) is not an interface
如果斷言類型成立,則表達式返回值就是T 類型的x,如果斷言失敗就會觸發panic。
是ok 會返回是否斷言成功不會出現panic,ok 就表示是否是成功了。
switch 的斷言方法
go 語法種還提供了另外一種類型switch 的斷言方法。
延伸 :自定義錯誤介面
參考
Last updated