go - 內建基礎類型

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

Go 語言中包括以下內建基礎類型:
布爾型:bool
整型:int int64 int32 int16 int8 uint8(byte) uint16 uint32 uint64 uint
浮點型:float32 float64
複數型:complex64 complex128
字串:string
字元型:rune
錯誤型:error

1. bool類型
關鍵字: bool
可定義為: true 或者 false 或者 邏輯運算式

var bool1 bool = truevar bool2 bool = (2 == 2)

註:不能接受其他類型的賦值,包括(0, 1),也不支援自動或強制類型轉換

2. 整型
分為有符號與無符號兩種
值範圍,如: int8 2^8 -128~127, uint8 0~255, 其他以此類推
int/uint 其值範圍與平台有關,所以 int32 != int
支援強制類型轉換,注意精度問題
變數2 = 類型(變數1)

3. 浮點型
即含小數點的資料
有兩種: float32 float64(預設)
可相互轉換,
註:比較大小時最好先確定比較精度, 再比較大小

4. 字串
聲明方式: var str string
值用 "" 或者 `` 包括, `` 可包含多行字串
字串的操作與數組相同
與如php等其他語言不同的是,字串的內容在初始化後,不能被修改,但可重新完全賦值

s := "123"s[1] = "3" //compile error
$s = "123"; $s[1] = "3"; echo $s; //133


5. 字元型
兩種字元類型: 
byte 對應 utf-8
rune 對應 unicode

6. 錯誤型
在 go 語言中,負責錯誤資訊處理的是 error 介面,也可以使用 errors 包
var e error = errors.New("...")
在 go 語言中,函數支援多個傳回值
可用下面的方式來處理錯誤

res, err := funName(param)if err != nil {    //處理錯誤} else {    //無錯誤}func funName(param) (res type, err error) {    if ... {        err = errors.New(...)        return    }    ...    return res, nil}


7. 複數

在此省略,有需要可再瞭解


note_type_1.go code list

 

package mainimport "fmt"import "errors" //引入 errors 包//聲明 bool 型全域變數var (enable = truedisable = false)func main() {//預定義常量 iotaconst (c0 = iota //0c1 = iota //0+1c2        //會自動賦上一個定義常量的值或者運算式)const (c3 = iota //0c4)fmt.Println("c0, c1, c2 = ", c0, c1, c2)fmt.Println("c3, c4 = ", c3, c4)/*//這種寫法編譯時間會報錯,需要 if condition { 在同一行代碼中//missing condition in if statement //enable == true not usedif enable == true {fmt.Println("error")}*/if enable == true {fmt.Println("enabled = ", enable)} else {fmt.Println("enabled = ", disable)}/*//編譯時間會出現以下錯誤:// cannot use 1 (type int) as type bool in assignmentenable = 1;// cannot convert 1 to type bool // cannot convert 1 (type int) to type bool // cannot use 1 (type int) as type bool in assignmentenable = bool(1)*/var (a int8 = 1b int  = 2)//invalid operation: a + b (mismatched types int8 and int)//c := a + b//需要做類型轉換c := int(a) + bfmt.Println("c = a + b = ", c)//int32 與 int 是兩種不同的類型,但是可用強制類型轉換var d int32//d = b    // cannot use b (type int) as type int32 in assignmentd = int32(b)fmt.Println("d = ", d)var f1 float32 = 1.23456fmt.Printf("f1 = %.3f \n", f1) //1.235f2 := 1.111//compile error: invalid operation: f1 + f2 (mismatched types float32 and float64//f3 := f1 + f2b1 := (float64(f1) == f2)//該比較方式不嚴謹if b1 {fmt.Println("float64(f1) == f2")} else {fmt.Println("float64(f1) != f2")}//用 "" 括起來表示字串//字串的操作與數組一樣var str string = "hello"fmt.Println("str = ", str)fmt.Println("str[1] = ", str[1])fmt.Printf("%c \n", str[1]) // s[i]取第i+1個字元//str = "hi"   //compile ok//str[0] = 'c' //compile error: cannot assign to str[0]//多行字串,用 `` 包含str2 := `SELECT username, pwd FROM tb_user WHERE id = 123456`fmt.Println(str2)str3 := " world!"fmt.Println("str + str3 = ", str + str3)  // s1 + s2, 連接字串//len(s)返回字串的長度fmt.Printf("length of str2 = %d \n", len(str2))//s[m:n] 返回從m位開始到n結束之間的字串,m, n可以省略, 此時m為0, n為len(s)s := "hello"s = "c" + s[1:]fmt.Println(s)      //cellofmt.Println(s[:3])  //celfmt.Println(s[1:3])//elfmt.Println(s[:])//cello//byte 用 '' 包括字元//var ch byte = "1" //compile error: cannot use "1" (type string) as type byte in assignmentvar ch1 byte = 'a'fmt.Printf("ch1 = %c \n", ch1)  //ch1 = afmt.Println(ch1)                //97//runevar ch2 rune = 'b'fmt.Printf("ch2 = %c \n", ch2)  //ch2 = bfmt.Println(ch2)                //98//errorerr := errors.New("error1")if err != nil {//錯誤處理...fmt.Println(err)}var e1 errorif e1 == nil {fmt.Println("no problem")}res, e := div(5, 0)//res, e := div(5, 1)if e != nil {//錯誤處理fmt.Println(e) //如果div(5, 0), 會輸出: error: division by zero} else {//正確fmt.Println("res = ", res) //如果div(5, 1),會輸出: res = 5}}//定義函數func div(a, b int) (res int, e error) {if b == 0 {e = errors.New("error: division by zero")return}return a /b , nil}


運行結果:

 



 

相關文章

聯繫我們

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