golang:基礎資料類型

來源:互聯網
上載者:User

基礎資料類型

整型

int,uint是根據CPU平台機器字大小決定取值範圍。

&      位元運算 AND|      位元運算 OR^      位元運算 XOR&^     位清空 (AND NOT)<<     左移>>     右移

預設值

    var a1 int             //0    var a2 float64         //0    var a3 bool            //false    var a4 byte            //0    var a5 rune            //0    var a6 []int           //[]    var a7 []byte          //[]    var a8 map[int64]int64 //map[]    var a9 string          //空    var a10 complex64      //(0+0i)

溢出情況

一個算術運算的結果,不管是有符號或者是無符號的,如果需要更多的bit位才能正確表示的話,就說明計算結果是溢出了。超出的高位的bit位部分將被丟棄。如果原始的數值是有符號類型,而且最左邊的bit位是1的話,那麼最終結果可能是負的,例如int8的例子

var u uint8 = 255fmt.Println(u, u+1, u*u) // "255 0 1"var i int8 = 127fmt.Println(i, i+1, i*i) // "127 -128 1"

類型轉換

對於每種類型T,如果轉換允許的話,類型轉換操作T(x)將x轉換為T類型。許多整數之間的相互轉換並不會改變數值;它們只是告訴編譯器如何解釋這個值。但是對於將一個大尺寸的整數類型轉為一個小尺寸的整數類型,或者是將一個浮點數轉為整數,可能會改變數值或丟失精度:

f := 3.645 // a float64    i := int(f)    fmt.Println(f, i) // "3.141 3"    f = 1.99    fmt.Println(int(f)) // "1"

fmt提示

fmt的兩個提示。通常Printf格式化字串包含多個%參數時將會包含對應相同數量的額外運算元,但是%之後的[1]副詞告訴Printf函數再次使用第一個運算元。第二,%後的#副詞告訴Printf在用%o、%x或%X輸出時產生0、0x或0X首碼。

ascii := 'a'unicode := '國'newline := '\n'fmt.Printf("%d %[1]c %[1]q\n", ascii)   // "97 a 'a'"fmt.Printf("%d %[1]c %[1]q\n", unicode) // "22269 國 '國'"fmt.Printf("%d %[1]q\n", newline)       // "10 '\n'"

string

一個字串是一個不可改變的位元組序列。

s := "hello, world"    fmt.Println(len(s))     // "12"    fmt.Println(s[0], s[7]) // "104 119" ('h' and 'w')    fmt.Println(s[:5])      // "hello"    fmt.Println(s[7:])      // "world"    fmt.Println(s[:])       // "hello, world"

字串可以用==和<進行比較;比較通過逐個位元組比較完成的,因此比較的結果是字串自然編碼的順序。

因為字串是不可修改的,因此嘗試修改字串內部資料的操作也是被禁止的:

s[0] = 'L' // compile error: cannot assign to s[0]

編碼方式

ASCII

最早時期,ASCII是7bit,只能擺哦事128個字元。無法表示出全世界各個國家的字元,所以有了Unicode

Unicode

使用4Byte,32bit,可以表示更多的字元。但是會造成浪費空間,有的字元只需要8bit就夠了。於是,有了UTF-8

UTF-8

是一個變長編碼。
UTF8編碼使用1到4個位元組來表示每個Unicode碼點,ASCII部分字元只使用1個位元組,常用字元部分使用2或3個位元組表示。每個符號編碼後第一個位元組的高端bit位用於表示總共有多少編碼個位元組。如果第一個位元組的高端bit為0,則表示對應7bit的ASCII字元,

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.