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

斷言轉換 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