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

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

常量 1 被截?cái)酁檎麛?shù)?

常量 1 被截?cái)酁檎麛?shù)?

Go
回首憶惘然 2021-08-16 15:16:55
為什么這段代碼不能編譯?package mainconst a = 1.000001const base = 0const b = a+basefunc main() {    f(b)}func f(int) {}$ go run a.go# command-line-arguments./a.go:4: constant 1 truncated to integer是說 1 被截?cái)嗔耍炕蛘?1 不能被截?cái)??它在談?wù)撃囊粋€(gè)?有人回答上述代碼無法編譯,因?yàn)閎是float64. 但是為什么會這樣編譯:package mainimport "fmt"const a = 1.000001const b = a-0.000001func main() {    fmt.Printf("%T %v\n",a,a)    fmt.Printf("%T %v\n",b,b)    f(b)}func f(int) {}$ go run a.go float64 1.000001float64 1? b是一個(gè)float64here,但它可以傳遞給f.
查看完整描述

3 回答

?
蕪湖不蕪

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超7個(gè)贊

Go 團(tuán)隊(duì)最近發(fā)表了一篇關(guān)于此的博客文章,我建議您閱讀。


從介紹


Go 是一種靜態(tài)類型語言,不允許混合數(shù)字類型的操作。您不能將 float64 添加到 int,甚至不能將 int32 添加到 int。然而,寫 1e6*time.Second 或 math.Exp(1) 甚至 1<<('\t'+2.0) 都是合法的。在 Go 中,常量與變量不同,其行為與常規(guī)數(shù)字非常相似。這篇文章解釋了為什么會這樣以及它意味著什么。


TLDR - Go 中的常量是無類型的。它們的類型只在最后一刻才結(jié)晶。


這解釋了你上面的問題。給定的


func f(int) {}

然后


f(1) // ok

f(1.000) // OK

f(1.0E6) // OK

f(1.0001) // BAD


查看完整回答
反對 回復(fù) 2021-08-16
?
夢里花落0921

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超6個(gè)贊

你的第一個(gè)程序可以這樣重寫:


package main

func main() {

    f(1.000001)

}

func f(int) {}

這顯然不是將整數(shù)值傳遞給整數(shù)函數(shù)。


您的第二個(gè)程序可以類似地重寫為:


package main

import "fmt"

func main() {

    fmt.Printf("%T %v\n",1.000001,1.000001)

    fmt.Printf("%T %v\n",1,1)

    f(1)

}

func f(int) {}

這看起來不錯(cuò)。


我所做的只是手動(dòng)替換a和b常量。這就是一切。


查看完整回答
反對 回復(fù) 2021-08-16
  • 3 回答
  • 0 關(guān)注
  • 281 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

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