跟著“碼術”一起學習Golang語言。今天講解Golang語言的基本類型,介紹布爾類型和數實值型別。
學習Golang語言(1): Hello World
學習Golang語言(2): 變數
學習Golang語言(3):類型--布爾型和數實值型別
學習Golang語言(4):類型--字串
學習Golang語言(5):類型--數組
布爾類型
布爾類型是 bool。Go語言提供了內建的布爾值true和flase。Go語言支援標準的邏輯和比較操作。這些操作的結果都是布爾值。
布爾值和運算式可以用於if語句中,for語句的條件中以及switch語句的case的判斷中。
邏輯操作符:
!:邏輯非操作符;
||:邏輯或操作符;
&&:邏輯與操作符
比較操作符。
<,>, ==,!=, <=, >=
數實值型別
----整形和浮點型
Go語言提供大量內建的數實值型別。眾所周知的類型如int,這個類型根據你的系統決定適當的長度。在32位系統上是32位,在64位系統上是64位。因此在Go語言中,int和int32是不同類型。如果你希望明確其長度,可以使用int32或者int64等等。
完整的整數類型(符號和無符號)是int8,int16,int32,int64 和 byte,uint8,uint16,uint32,uint64。其中byte 是 uint8 的別名。
浮點類型的值有 float32 和 float64 (沒有 float 類型)。64 位元的整數和浮點數總是 64 位元的,即便是在 32 位的架構上。
整形變數的預設賦值是0,浮點型變數的預設賦值是0.0
需要注意的是:這些類型全部都是獨立的,並且混合使用這些類型向變數賦值會引起編譯器錯誤。例如:
package mainfunc main(){ var a int //通用整數類型 var b int32 // 32位整數類型 a = 15 b =a + a // 混合這些類型是非法的,這會導致編譯異常 b = b + 5 // 5是常量(未定義類型),所以沒有問題}
如果不同數實值型別之間進行數值運算或者比較操作時,需要進行類型轉換。通常將類型轉換成最大的類型以防止精度丟失。類型轉換採用type(value)的形式。當將類型轉換為小的類型時,為了防止防止精度丟失,我們可以建立合適的函數。例如:將int型轉換為uint8
func Uint8FromInt(n int) (uint8, error) { if 0 <= n && n <= math.MaxUint8 {// conversion is safe return uint8(n), nil } return 0, fmt.Errorf(“%d is out of the uint8 range”, n)}
----複數類型
Go原生支援複數。複數有兩種類型:complex64(實部虛部都是一個float32)和complex128 (實部虛部都是一個float64)。複數的形式為:re+im i。其中re為實部,im為虛部。
複數可以使用內建的complex()函數或者包含虛部數值的常量來建立。複數的各個部分可以使用內建函數real()和imag()函數獲得。
例如:
var c1 complex64 = 5 + 10i fmt.Printf(“The value is: %v”, c1) // 這裡會輸出: 5 + 10i c := complex(50,100); fmt.Printf(“The value is: %v”, c1) //這裡會輸出: 50 + 100i
複數支援所有的算術操作符。唯一可以用於複數的比較操作符號是 == 和!=。
標準庫中有一個複數包 math/cmplx提供複數各種通用的操作函數。
如果不需要考慮記憶體問題,盡量使用complex128類型,因為標準庫中所有函數都是使用complex128類型。
---------------------------------------------
歡迎關注碼術!一起學習golang.