站長資訊網
        最全最豐富的資訊網站

        go語言怎么進行強制類型轉換

        go語言中的強制類型轉換有三種語法形式:1、類型斷言,語法“value, ok := x.(需要轉換的類型)”;2、使用“type (a)”形式進行的類型轉換,語法“類型B的值 = 類型B(類型A的值)”;3、指針類型轉換,語法“(*指針類型)(unsafe.Pointer(值))”。

        go語言怎么進行強制類型轉換

        本教程操作環境:windows7系統、GO 1.18版本、Dell G3電腦。

        golang是強類型語言,有強制類型轉換,但是不同于Java語言所使用的強制類型轉換。

        golang強制類型轉換

        golang語言中分為類型轉換(type conversion)類型斷言(type assertion)指針類型轉換

        1、類型斷言

        類型斷言(Type Assertion)是一個使用在接口值上的操作,用于檢查接口類型變量所持有的值是否實現了期望的接口或者具體的類型。

        語法格式如下:

        value, ok := x.(T)
        登錄后復制

        其中,x 表示一個接口的類型,T 表示一個具體的類型(也可為接口類型)。

        示例:

        package main  import "fmt"  func main() {     var a interface{} =10     t,ok:= a.(int)     if ok{         fmt.Println("int",t)     }     t2,ok:= a.(float32)     if ok{         fmt.Println("float32",t2)     } }
        登錄后復制

        打印結果是:int 10 因為 golang 自動推斷 a 是 int 類型。 (這個更像是Java的強制類型轉換,認為變量 a 是 int 類型,就強轉為 int 類型來使用)
        登錄后復制

        2、類型轉換

        package main  import "fmt"  func main() {    var a float32 = 5.6    var b int = 10    fmt.Println (a * float32(b)) }
        登錄后復制

        代碼段中的 float32(b) 就是第二種強制類型轉換, 普通變量類型int,float,string 都可以使用 type (a)這種形式來進行強制類型轉換,比如

        var a int32  = 10 var b int64 = int64(a) var c float32 = 12.3 var d float64 =float64(c)
        登錄后復制

        這種類型轉換形式更像是Java的通過構造類的構造方法創建一個新類型對象。在Java語法中不屬于強制類型轉換。

        3、指針類型轉換

        package main  func main() {    var a int = 10    var p *int =&a    var c *int64     c= (*int64)(p) }
        登錄后復制

        這樣的代碼是錯誤的,編譯器會提示cannot convert p (type *int) to type *int64
        指針的強制類型轉換需要用到unsafe包中的函數實現

        package main  import "unsafe" import "fmt"  func main() {     var a int =10     var b *int =&a     var c *int64 = (*int64)(unsafe.Pointer(b))     fmt.Println(*c) }
        登錄后復制

        總結

        golang中的強制類型轉換有三種語法形式,分別是 類型斷言類型轉換指針類型轉換,語法上類型斷言指針類型轉換和Java比較像。

        golang和Java的強制類型轉換可以對比著理解,但是不同語言設計思想不同,不能硬類比。

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 久久夜色精品国产噜噜亚洲AV| 久久久久久国产精品免费无码| 日本精品一区二区三区在线视频一| 麻豆亚洲AV永久无码精品久久| 国产亚洲精品国看不卡| 国产精品无码无在线观看| 四虎国产精品成人免费久久| 911亚洲精品国产自产| 国产成人久久精品一区二区三区 | 国产精品伦理久久久久久| 国产AV无码专区亚洲精品| 亚洲精品V欧洲精品V日韩精品| 国精品无码A区一区二区| 欧美高清在线精品一区| 99久久免费国产精精品| 久久精品99久久香蕉国产色戒| 尤物国精品午夜福利视频| 久久国产精品一区| 精品日本一区二区三区在线观看| 日本久久久精品中文字幕| 98视频精品全部国产| 精品久久久久香蕉网| 亚洲韩国精品无码一区二区三区 | 国产伦精品一区二区三区| 亚洲中文字幕久久精品无码喷水 | 欧美精品色精品一区二区三区| 国产精品主播一区二区| 99久久夜色精品国产网站| 国产午夜精品视频| 国产精品成人va在线观看| 国产精品一区二区av| 少妇人妻精品一区二区三区 | 91精品国产色综合久久| 国产成人精品一区二区三区免费| 人妻少妇精品视中文字幕国语| 在线观看亚洲精品福利片| 亚洲综合国产精品第一页 | 久久久久这里只有精品 | 久久亚洲精品成人av无码网站| 亚洲AV永久无码精品水牛影视| 亚洲精品无码鲁网中文电影|