[日常] Go語言聖經--複數,布爾值,字串習題

來源:互聯網
上載者:User

標籤:utf8   package   http   處理   utf8編碼   小數   編寫   浮點   sprintf   

go語言聖經-複數

1.我們把形如a+bi(a,b均為實數)的數稱為複數,其中a稱為實部,b稱為虛部,i稱為虛數單位。兩種精度的複數類型:complex64和complex128,分別對應float32和float64兩種浮點數精度

2.complex函數用於構建複數,real和imag函數分別返回複數的實部和虛部

 

go語言聖經-布爾型

1.布爾值可以和&&(AND)和||(OR)操作符結合,並且有短路行為

2.&&的優先順序比||高

 

go語言聖經-字串

1.一個字串是一個不可改變的位元組序列,文本字串通常被解釋為採用UTF8編碼的Unicode碼點(rune)序列

2.內建的len函數可以返回一個字串中的位元組數目,不是字元數目,對於非ASCII字元的UTF8編碼會要兩個或多個位元組

3.+操作符將兩個字串連結構造一個新字串

4.字串值也可以用字串面值方式編寫,只要將一系列位元組序列包含在雙引號即可

5.原生的字串面值形式是`...`,使用反引號代替雙引號用於編寫Regex,HTML模板、JSON面值、命令列提示資訊會很方便

6.UTF8是一個將Unicode碼點編碼為位元組序列的變長編碼,Go語言的源檔案採用UTF8編碼,並且Go語言處理UTF8編碼的文本也很出色,Go語言的range迴圈在處理字串的時候,會自動隱式解碼UTF8字串

7.每個符號都分配一個唯一的Unicode碼點,Unicode碼點對應Go語言中的rune整數類型(譯註:rune是int32等價類別型)。小於256碼點值可以寫在一個十六進位轉義位元組中,例如\x41對應字元‘A‘,更大的碼點則必須使用\u或\U轉義形式

 

7.utf8.RuneCountInString(s)函數 統計字元個數

8.四個包對字串處理尤為重要:bytes、strings、strconv和unicode包

9.將一個整數轉為字串,一種方法是用fmt.Sprintf返回一個格式化的字串;另一個方法是用strconv.Itoa(“整數到ASCII”):

10.字串轉換成整數 strconv.ParseInt  strconv.ParseFloat

 

練習 3.10: 編寫一個非遞迴版本的comma函數,使用bytes.Buffer代替字串連結操作。

 

練習 3.11: 完善comma函數,以支援浮點數處理和一個可選的加號或減號的處理。

 

練習 3.12: 編寫一個函數,判斷兩個字串是否是是相互打亂的,也就是說它們有著相同的字元,但是對應不同的順序。

package mainimport(        "fmt"        "strings"        "bytes")func main(){        fmt.Println(comma(-5123456.23))        fmt.Println(compare("abec","ecab"))}/*練習 3.10: 編寫一個非遞迴版本的comma函數,使用bytes.Buffer代替字串連結操作。練習 3.11: 完善comma函數,以支援浮點數處理和一個可選的加號或減號的處理。*/func comma(str float64)string{        //整型轉換成字串        s := fmt.Sprintf("%.2f",str)        //取出小數點後面部分        var end string        if dot := strings.LastIndex(s, "."); dot >= 0 {                end = s[dot:]                s = s[:dot]        }        num := len(s)        var buf bytes.Buffer        j := 1        for i:=num-1;i>=0;i--{                buf.WriteByte(s[i])                if j%3==0 && i!=0{                        buf.WriteString(",")                }                j++        }        res:=buf.String()        var r bytes.Buffer        //反轉字串        for i:=len(res)-1;i>=0;i--{                r.WriteByte(res[i])        }        r.WriteString(end)        return r.String()}//練習 3.12: 編寫一個函數,判斷兩個字串是否是是相互打亂的,也就是說它們有著相同的字元,但是對應不同的順序。func compare(str1 string,str2 string)bool{        //比較兩個字串的長度,外層迴圈是較長的        num1:=strings.Count(str1,"")        num2:=strings.Count(str2,"")        if num2 > num1{                str1,str2=str2,str1        }        var res bool        for _,v :=range str1{                res = false                for _,sv :=range str2{                        if v== sv{                                res =true                        }                }                if !res{                        break                }        }        return res}

  

[日常] Go語言聖經--複數,布爾值,字串習題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.