久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長(zhǎng)資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      go語(yǔ)言怎么進(jìn)行強(qiáng)制類(lèi)型轉(zhuǎn)換

      go語(yǔ)言中的強(qiáng)制類(lèi)型轉(zhuǎn)換有三種語(yǔ)法形式:1、類(lèi)型斷言,語(yǔ)法“value, ok := x.(需要轉(zhuǎn)換的類(lèi)型)”;2、使用“type (a)”形式進(jìn)行的類(lèi)型轉(zhuǎn)換,語(yǔ)法“類(lèi)型B的值 = 類(lèi)型B(類(lèi)型A的值)”;3、指針類(lèi)型轉(zhuǎn)換,語(yǔ)法“(*指針類(lèi)型)(unsafe.Pointer(值))”。

      go語(yǔ)言怎么進(jìn)行強(qiáng)制類(lèi)型轉(zhuǎn)換

      本教程操作環(huán)境:windows7系統(tǒng)、GO 1.18版本、Dell G3電腦。

      golang是強(qiáng)類(lèi)型語(yǔ)言,有強(qiáng)制類(lèi)型轉(zhuǎn)換,但是不同于Java語(yǔ)言所使用的強(qiáng)制類(lèi)型轉(zhuǎn)換。

      golang強(qiáng)制類(lèi)型轉(zhuǎn)換

      golang語(yǔ)言中分為類(lèi)型轉(zhuǎn)換(type conversion)、類(lèi)型斷言(type assertion)指針類(lèi)型轉(zhuǎn)換。

      1、類(lèi)型斷言

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

      語(yǔ)法格式如下:

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

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

      示例:

      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)     } }
      登錄后復(fù)制

      打印結(jié)果是:int 10 因?yàn)?golang 自動(dòng)推斷 a 是 int 類(lèi)型。 (這個(gè)更像是Java的強(qiáng)制類(lèi)型轉(zhuǎn)換,認(rèn)為變量 a 是 int 類(lèi)型,就強(qiáng)轉(zhuǎn)為 int 類(lèi)型來(lái)使用)
      登錄后復(fù)制

      2、類(lèi)型轉(zhuǎn)換

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

      代碼段中的 float32(b) 就是第二種強(qiáng)制類(lèi)型轉(zhuǎn)換, 普通變量類(lèi)型int,float,string 都可以使用 type (a)這種形式來(lái)進(jìn)行強(qiáng)制類(lèi)型轉(zhuǎn)換,比如

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

      這種類(lèi)型轉(zhuǎn)換形式更像是Java的通過(guò)構(gòu)造類(lèi)的構(gòu)造方法創(chuàng)建一個(gè)新類(lèi)型對(duì)象。在Java語(yǔ)法中不屬于強(qiáng)制類(lèi)型轉(zhuǎn)換。

      3、指針類(lèi)型轉(zhuǎn)換

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

      這樣的代碼是錯(cuò)誤的,編譯器會(huì)提示cannot convert p (type *int) to type *int64
      指針的強(qiáng)制類(lèi)型轉(zhuǎn)換需要用到unsafe包中的函數(shù)實(shí)現(xiàn)

      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) }
      登錄后復(fù)制

      總結(jié)

      golang中的強(qiáng)制類(lèi)型轉(zhuǎn)換有三種語(yǔ)法形式,分別是 類(lèi)型斷言類(lèi)型轉(zhuǎn)換,指針類(lèi)型轉(zhuǎn)換,語(yǔ)法上類(lèi)型斷言指針類(lèi)型轉(zhuǎn)換和Java比較像。

      golang和Java的強(qiáng)制類(lèi)型轉(zhuǎn)換可以對(duì)比著理解,但是不同語(yǔ)言設(shè)計(jì)思想不同,不能硬類(lèi)比。

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)