第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Go:如何將 float32 指針轉換為 float64 指針

Go:如何將 float32 指針轉換為 float64 指針

Go
慕碼人2483693 2023-03-15 13:53:42
如何將 float32 指針轉換*float32為 float64 指針*float64。package mainimport "fmt"func main() {    var value *float32    v := float64(*value)    vp := &v    fmt.Println(vp)}以下代碼返回運行時錯誤:無效的內存地址或 nil 指針取消引用
查看完整描述

2 回答

?
慕萊塢森

TA貢獻1810條經驗 獲得超4個贊

您的代碼失敗的原因很簡單,就是您試圖取消引用尚未初始化的指針:


    var value *float32 

聲明一個指向 a 的指針float32,但不對其進行初始化,從而得到一個nil指針。


    v := float64(*value)

然后嘗試取消引用value,但正如我們剛剛確定的那樣,value它nil沒有指向任何東西,因此詢問它指向的內容必然會導致錯誤。


但是,您的代碼實際上很好,只要您有一個*float32實際上指向 a 的代碼float32,如果我們添加一個實際float32變量并初始化value以指向它,我們就可以看到它:


package main


import "fmt"


func main() {

    var vv float32 = 3.14159

    var value *float32 = &vv

    v := float64(*value)

    vp := &v

    fmt.Println(vp)

}

這將輸出值的地址float64。


但是,請注意 afloat64不僅僅是float32占用兩倍字節(jié)數(shù)的 a。精度和內部表示不同,進一步修改代碼可以看出:


func main() {

    var vv float32 = 3.14159

    var value *float32 = &vv

    v := float64(*value)

    fmt.Println(vv)

    fmt.Println(v)

}

您應該看到類似于以下內容的輸出:


3.14159

3.141590118408203

float64這不是錯誤,這是vs的不同內部表示的結果float32。


無法保證這些不同類型中的值完全相同 - 每個類型都具有使某些值在字面上無法表示的特征,因此無法保證float32(v) == float64(v)每個v.


這也是為什么您不能簡單地對指針進行類型轉換的原因:


    vp := *float64(value)

這是非法的,因為指向 a 的指針float64指向的東西與指向 a 的指針根本不同float32。


相比之下,您可以簡單地將 a 類型轉換*int32為 a *int64。


查看完整回答
反對 回復 2023-03-15
?
慕雪6442864

TA貢獻1812條經驗 獲得超5個贊

一種方法是編寫一個函數(shù)來安全地將 float32 指針轉換為 float64 指針。


package main


import "fmt"


func main() {

    var value *float32

    v := float32ToFloat64(value)

    fmt.Println(v)


    val := float32(1.2)

    p := float32ToFloat64(&val)

    fmt.Println(*p)

}


func float32ToFloat64(value *float32) *float64 {

    if value == nil {

        return nil

    }

    v := float64(*value)

    return &v

}


查看完整回答
反對 回復 2023-03-15
  • 2 回答
  • 0 關注
  • 170 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號