golang強制類型轉換和類型斷言

1.強制類型轉換

golang是強類型語言,但是和c++,Java不太一樣的是,go中沒有隱式類型轉換,go中的類型轉換隻有:強制類型轉換和斷言

在java中:

    public static void main(String[] args){
        int a = 1;
        double b = 1.0;
        System.out.println(a * b);
    }

在java中這樣是沒有問題,編譯器隱式的把a向上轉為double類型

但是在go中是會報錯的:

在這裡插入圖片描述

需要進行強制類型轉換:

func Test()  {
 var a int = 1
 var b float32 = 1.0
 fmt.Println(float32(a) * b)
}

go中的強制類型轉換為:

type(v)


普通變量類型int,float,string 都可以使用 type (a)這種形式來進行強制類型轉換,

比如:

var a int32  = 10
var b int64 = int64(a)
var c float32 = 12.3
var d float64 =float64(c)

指針的強制類型轉換需要用到unsafe包中的函數實現

func Test()  {
 var a int =10
 var b *int =&a
 var c *int64 = (*int64)(unsafe.Pointer(b))
 fmt.Println(*c)
}

2.類型斷言

go中的類型判斷則是判斷一個變量是否屬於某一種類型

func Test()  {
 var a interface{} = 10
 _,isInt := a.(int) // 進行類型的斷言的變量必須是空接口
 if isInt{
  fmt.Println(a)
 }
}

形式如下:

interface{}.(type)

到此這篇關於golang強制類型轉換和類型斷言的文章就介紹到這瞭,更多相關golang類型轉換內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: