GO-資料型別

Jeff的技術棧發表於2020-10-22

資料型別

1.分類

Go語言內建以下這些基礎型別:

型別 名稱 長度 零值 說明
bool 布林型別 1 false 其值不為真即為家,不可以用數字代表true或false
byte 位元組型 1 0 uint8別名
rune 字元型別 4 0 專用於儲存unicode編碼,等價於uint32
int, uint 整型 4或8 0 32位或64位
int8, uint8 整型 1 0 -128 ~ 127, 0 ~ 255
int16, uint16 整型 2 0 -32768 ~ 32767, 0 ~ 65535
int32, uint32 整型 4 0 -21億~ 21億, 0 ~ 42億
int64, uint64 整型 8 0
float32 浮點型 4 0.0 小數位精確到7位
float64 浮點型 8 0.0 小數位精確到15位
complex64 複數型別 8
complex128 複數型別 16
uintptr 整型 4或8 ⾜以儲存指標的uint32或uint64整數
string 字串 "" utf-8字串

2.布林型別

var v1 bool
v1 = true
v2 := (1 == 2) // v2也會被推導為bool型別

//布林型別不能接受其他型別的賦值,不支援自動或強制的型別轉換
var b bool
b = 1 // err, 編譯錯誤
b = bool(1) // err, 編譯錯誤

3.整型

varv1int32
v1=123
v2:=64//v1將會被自動推導為int型別

4.浮點型

 var f1 float32
    f1 = 12
    f2 := 12.0 // 如果不加小數點, fvalue2會被推導為整型而不是浮點型,float64

5.字元型別

在Go語言中支援兩個字元型別,一個是byte(實際上是uint8的別名),代表utf-8字串的單個位元組的值;另一個是rune,代表單個unicode字元。

package main

import (
    "fmt"
)

func main() {
    var ch1, ch2, ch3 byte
    ch1 = 'a'  //字元賦值
    ch2 = 97   //字元的ascii碼賦值
    ch3 = '\n' //轉義字元
    fmt.Printf("ch1 = %c, ch2 = %c, %c", ch1, ch2, ch3)
}

6.字串

在Go語言中,字串也是一種基本型別:

    var str string                                    // 宣告一個字串變數
    str = "abc"                                       // 字串賦值
    ch := str[0]                                      // 取字串的第一個字元
    fmt.Printf("str = %s, len = %d\n", str, len(str)) //內建的函式len()來取字串的長度
    fmt.Printf("str[0] = %c, ch = %c\n", str[0], ch)

    //`(反引號)括起的字串為Raw字串,即字串在程式碼中的形式就是列印時的形式,它沒有字元轉義,換行也將原樣輸出。
    str2 := `hello
    mike \n \r測試
    `
    fmt.Println("str2 = ", str2)
    /*
        str2 =  hello
              mike \n \r測試
    */

7.複數型別

複數實際上由兩個實數(在計算機中用浮點數表示)構成,一個表示實部(real),一個表示虛部(imag)。

    var v1 complex64 // 由2個float32構成的複數型別
    v1 = 3.2 + 12i
    v2 := 3.2 + 12i        // v2是complex128型別
    v3 := complex(3.2, 12) // v3結果同v2

    fmt.Println(v1, v2, v3)
    //內建函式real(v1)獲得該複數的實部
    //通過imag(v1)獲得該複數的虛部
    fmt.Println(real(v1), imag(v1))

相關文章