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

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

如何在 for 循環(huán)初始化中聲明 uint8,因為在 for 循環(huán)初始化中不允許使用 var

如何在 for 循環(huán)初始化中聲明 uint8,因為在 for 循環(huán)初始化中不允許使用 var

Go
九州編程 2023-05-04 17:03:00
我正在編寫以下代碼來計算人口數(shù)量,如下所示:package mainimport (    "fmt")func main() {    var pc [256]byte    for i := range pc {        pc[i] = pc[i/2] + byte(i&1)    }    var x uint64 = 65535    var population uint8    for i := 0; i < 8; i++ {        population  = population + pc[byte(x>>(i*8))]    }    fmt.Printf("Population Count: %d", population)}在編譯時出現(xiàn)以下錯誤:prog.go:19:39: 無效操作:x >> (i * 8) (移位計數(shù)類型 int,必須是無符號整數(shù))問題在于i初始化 for 循環(huán)時聲明的變量。的速記初始化i使其成為int內(nèi)部類型的類型signed int32。這就是為什么下面一行:population  = population + pc[byte(x>>(i*8))]導(dǎo)致問題。因為移位運算符>>只期望無符號整數(shù),但表達式i*8結(jié)果int是 internally signed int32。因為var不能在for初始化時使用。for var i uint8 = 0; i < 8; i++ { ... }語法錯誤:初始化程序中不允許使用 var 聲明i我可以在 之外聲明變量for loop,但我發(fā)現(xiàn)它不干凈且可讀。實現(xiàn)相同目標的干凈方法應(yīng)該是什么?
查看完整描述

1 回答

?
明月笑刀無情

TA貢獻1828條經(jīng)驗 獲得超4個贊

Go 編程語言規(guī)范

變量聲明

...每個變量在賦值中被賦予相應(yīng)初始化值的類型。


i := uint(0).?例如,

package main


import (

? ? "fmt"

)


func main() {

? ? var pc [256]byte


? ? for i := range pc {

? ? ? ? pc[i] = pc[i/2] + byte(i&1)

? ? }


? ? var x uint64 = 65535

? ? var population uint8


? ? for i := uint(0); i < 8; i++ {

? ? ? ? population = population + pc[byte(x>>(i*8))]

? ? }


? ? fmt.Printf("Population Count: %d", population)

}

輸出:

Population?Count:?16


查看完整回答
反對 回復(fù) 2023-05-04
  • 1 回答
  • 0 關(guān)注
  • 138 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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