首頁>技術>

編碼的實現環境是go1.15.6、LiteIDE X37.3、win7。是《Go語言聖經》的練習及作業,個別程式碼有修改,僅供交流學習之用。

// Boiling prints the boiling point of water.

package mainimport "fmt"const boilingF = 212.0func main() {    var f = boilingF    var c = (f - 32) * 5 / 9    fmt.Printf("boiling point = %goF or %goC \n", f, c)    // Output:    // boiling point = 212°F or 100°C}

// Ftoc prints two Fahrenheit-to-Celsius conversions.

package mainimport "fmt"const boilingF = 212.0func main() {    const freezingF, boilingF = 32.0, 212.0    fmt.Printf("%goF = %goC \n", freezingF, fToC(freezingF))    fmt.Printf("%goC = %goF \n", boilingF, fToC(boilingF))}func fToC(f float64) float64 {    return (f - 32) * 5 / 9}

// Echo4 prints its command-line arguments.

// 指標是實現標準庫中flag包的關鍵技術,它使用命令列引數來設定對應變數的值。

package mainimport (    "fmt"    "flag"    "strings")// 呼叫flag.Bool函式會建立一個新的對應布林型標誌引數的變數。它有三個屬性:// 第一個是命令列標誌引數的名字“n”,然後是該標誌引數的預設值(這裡是false),最後是該標誌引數對應的描述資訊。// 如果使用者在命令列輸入了一個無效的標誌引數,或者輸入-h或-help引數,那麼將列印所有標誌引數的名字、預設值和描述資訊。var n = flag.Bool("n", false, "省略行尾換行符(omit trailing newline)")var sep = flag.String("s", " ", "分隔符(separator)")   //呼叫flag.String函式將建立一個對應字串型別的標誌引數變數。func main() {    // 當程式執行時,必須在使用標誌引數對應的變數之前先呼叫flag.Parse函式,用於更新每個標誌引數對應變數的值(之前是預設值)。    // 如果在flag.Parse函式解析命令列引數時遇到錯誤,預設將列印相關的提示資訊,然後呼叫os.Exit(2)終止程式。    flag.Parse()    // 對於非標誌引數的普通命令列引數可以透過呼叫flag.Args()函式來訪問,返回值對應一個字串型別的slice。    fmt.Print(strings.Join(flag.Args(), *sep))  // sep和n變數分別是指向對應命令列標誌引數變數的指標    if !*n {        fmt.Println()    }    var ii int    var ss string    var bb bool    var ff interface{}    fmt.Printf("整型、字串型、布林型、空介面的預設值分別是:", ii, ss, bb, ff)    // Output:    // boiling point = 212°F or 100°C}

// Cf converts its numeric argument to Celsius and Fahrenheit.

// 執行命令:go run cf.go 22

package mainimport (    "fmt"    "os"    "strconv"    "gopl.io/tempconv")func main() {    for _, arg := range os.Args[1:] {        t, err := strconv.ParseFloat(arg, 64)        if err != nil {            fmt.Fprintf(os.Stderr, "cf: %v\n", err)            os.Exit(1)        }        fmt.Println(t)        f := tempconv.Fahrenheit(t)        c := tempconv.Celsius(t)        fmt.Printf("%s = %s, %s = %s\n", f, tempconv.FToC(f), c, tempconv.CToF(c))    }}

// popcount 定義了一個PopCount函式,用於返回一個數字中含二進位制1bit的個數。

package mainimport (    "fmt")var pc [256]bytefunc init() {    for i := range pc {        pc[i] = pc[i/2] + byte(i&1)    }    fmt.Println(pc, 6&1)}// pc[i] is the population count of i.可代替初始化函式/*var pc [256]byte func() pc [256]byte {    for i := range pc {        pc[i] = pc[i/2] + byte(i&1)    }}*/// PopCount returns the population count (number of set bits) of x.func PopCount(x int64) int {    return int(pc[byte(x>>(0*8))] +        pc[byte(x>>(1*8))] +        pc[byte(x>>(2*8))] +        pc[byte(x>>(3*8))] +        pc[byte(x>>(4*8))] +        pc[byte(x>>(5*8))] +        pc[byte(x>>(6*8))] +        pc[byte(x>>(7*8))])}func main() {    fmt.Println(PopCount(7))}

6
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • Python的元組,沒想象的那麼簡單