日常 Go語言聖經 包和檔案 包初始化習題

2021-09-27 09:05:58 字數 1260 閱讀 4677

1.解決包級變數的依賴順序,然後按照包級變數宣告出現的順序依次初始化

2.包中含有多個.go原始檔,它們將按照發給編譯器的順序進行初始化

3.init初始化函式,在每個檔案中的init初始化函式,在程式開始執行時按照它們宣告的順序被自動呼叫

4.每個包在解決依賴的前提下,以匯入宣告的順序初始化,每個包只會被初始化一次,在main函式執行之前,所有依賴的包都已經完成初始化工作了

5.乙個數字中含二進位制1bit的個數演算法,統計出乙個int型數值中位元值為1的位元個數

&是二進位制「與」運算,參加運算的兩個數的二進位制按位進行運算,運算的規律是:

0 & 0=0

0 & 1=0

1 & 0=0

1 & 1=1

練習 2.3: 重寫popcount函式,用乙個迴圈代替單一的表示式。比較兩個版本的效能。(11.4節將展示如何系統地比較兩個不同實現的效能。)

練習 2.4: 用移位演算法重寫popcount函式,每次測試最右邊的1bit,然後統計總數。比較和查表演算法的效能差異。

練習 2.5: 表示式x&(x-1)用於將x的最低的乙個非零的bit位清零。使用這個演算法重寫popcount函式,然後比較效能。

package main

import(

"fmt"

)var pc [256]byte

func init()

}func main()

//練習 2.4: 用移位演算法重寫popcount函式,每次測試最右邊的1bit,然後統計總數。比較和查表演算法的效能差異。

//移位演算法

func popcount1(x uint64) int

num=i

}

return num

}//練習 2.5: 表示式x&(x-1)用於將x的最低的乙個非零的bit位清零。使用這個演算法重寫popcount函式,然後比較效能。

//x & (x-1)演算法

func popcount2(x uint64) int

return num

}//查表法

func popcount(x uint64) int

//練習 2.3: 重寫popcount函式,用乙個迴圈代替單一的表示式。比較兩個版本的效能。(11.4節將展示如何系統地比較兩個不同實現的效能。)

//查表法,使用迴圈

func popcountfor(x uint64) int

return int(num)

}

日常 Go語言聖經 包和檔案 匯入包習題

1.每個包都有乙個全域性唯一的匯入路徑 2.按照慣例,乙個包的名字和包的匯入路徑的最後乙個字段相同 練習 2.2 寫乙個通用的單位轉換程式,用類似cf程式的方式從命令列讀取引數,如果預設的話則是從標準輸入讀取引數,然後做類似celsius和fahrenheit的單位轉換,長度單位可以對應英呎和公尺,...

Go語言包和檔案

go語言工作空間 編譯工具對原始碼目錄有嚴格要求,每個工作空間 workspace 必須由bin pkg src三個目錄組成。src 專案原始碼目錄,裡面每乙個子目錄,就是乙個包,包內是go語言的原始碼檔案。pkg go語言編譯的.a 中間檔案存放目錄,可自動生成。bin go語言編譯可執行檔案存放...

日常 Go語言聖經 Map習題

練習 4.8 修改charcount程式,使用unicode.isletter等相關的函式,統計字母 數字等unicode中不同的字元類別。練習 4.9 編寫乙個程式wordfreq程式,報告輸入文字中每個單詞出現的頻率。在第一次呼叫scan前先呼叫input.split bufio.scanwor...