1. 程式人生 > >Go入門自學寶典003-變數(基本資料型別)

Go入門自學寶典003-變數(基本資料型別)

003-基礎資料型別
003.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字串

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

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

003.3 整型
var v1 int32
v1 = 123
v2 := 64 // v1將會被自動推導為int型別

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

003.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)
}

003.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測試
*/

003.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))