繼續來學習go順序程式設計3

2021-08-14 04:41:18 字數 2319 閱讀 4296

3. 型別

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

布林型別: bool 。

整型: int8 、 byte 、 int16 、 int 、 uint 、 uintptr 等。

浮點型別: float32 、 float64 。

複數型別: complex64 、 complex128 。

字串: string 。

字元型別: rune 。

錯誤型別: error 。

此外,go語言也支援以下這些復合型別:

指標(pointer)

陣列(array)

切片(slice)

字典(map)

通道(chan)

結構體(struct)

介面(inte***ce)

關於錯誤型別,通道,結構體和介面學習的書上後面有介紹,現在不懂;

在這些基礎型別之上go還封裝了下面這幾種型別: int 、 uint 和 uintptr 等。這些型別的

特點在於使用方便,但使用者不能對這些型別的長度做任何假設。對於常規的開發來說,用 int

和 uint 就可以了,沒必要用 int8 之類明確指定長度的型別,以免導致移植困難。

3.1 布林型別

go語言中的布林型別與其他語言基本一致,關鍵字也為 bool ,可賦值為預定義的 true 和false 示例**如下:

var v1 bool

v1 = true

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

布林型別不能接受其他型別的賦值,不支援自動或強制的型別轉換。以下的示例是一些錯誤的用法,

會導致編譯錯誤:

var b bool

b = 1 // 編譯錯誤

b = bool(1) // 編譯錯誤

以下的用法才是正確的:

var b bool

b = (1!=0) // 編譯正確

fmt.println("result:", b) // 列印結果為result: true

3.2 整型

整型是所有程式語言裡最基礎的資料型別。go語言支援表3-1所示的這些整型型別。

3.2.1. 型別表示

需要注意的是, int 和 int32 在go語言裡被認為是兩種不同的型別,編譯器也不會幫你自動

做型別轉換,比如以下的例子會有編譯錯誤:

var value2 int32

value1 := 64 // value1將會被自動推導為int型別

value2 = value1 // 編譯錯誤

編譯錯誤類似於:cannot use value1 (type int) as type int32 in assignment。

使用強制型別轉換可以解決這個編譯錯誤:

value2 = int32(value1) // 編譯通過

當然,在做強制型別轉換時,需要注意資料長度被截短而發生的資料精度損失(比如

將浮點數強制轉為整數)和值溢位(值超過轉換的目標型別的值範圍時)問題。

3.2.2. 數值運算

go語言支援下面的常規整數運算:+、 - 、*、/和%。加減乘除就不詳細解釋了,需要說下的

是,% 和在c語言中一樣是求餘運算,例如:

5 % 3 // 結果為:2

3.2.3. 比較運算

go語言支援以下的幾種比較運算子: > 、 < 、 == 、 >= 、 <= 和 != 。這一點與大多數其他語言相

同,與c語言完全一致。下面為條件判斷語句的例子:

i, j := 1, 2

if i == j

兩個不同型別的整型數不能直接比較,比如 int8 型別的數和 int 型別的數不能直接比較,但

各種型別的整型變數都可以直接與字面常量(literal)進行比較,比如:

var i int32

var j int64

i, j = 1, 2

if i == j

if i == 1 || j == 2

3.2.4. 位運算

go語言支援表3-2所示的位運算子。

go語言的大多數字運算子與c語言都比較類似,除了取反在c語言寫法中是 ~x ,而在go語言中是 ^x 。

好了,今天就抽空學習了型別,型別中的布林型別和整型。go中的型別還是跟c中有些不一樣,但總體的思想差不多,有的寫法不一樣而已。嗯接下來有時間繼續學習。go,go,go!

繼續來學習socket

經過這段時間的閱讀公司 獲得了一定的知識,也發現了一些公司 裡面的錯誤和奇葩的事情。首先是我最不理解的,中變數的命名奇葩,巨集定義奇葩,函式名奇葩。其實這三個東西,歸根結底就是乙個東西,就是起名字的問題。我們知道,在 裡面,要想是 能夠簡單易讀,而且條理清晰。我們可以使用英語來給變數給函式命名,這是...

GO語言 順序程式設計1

記錄筆記 go語言的順序程式設計 1.變數 變數是幾乎所有程式語言中最基本的組成元素。從根本上說,變數相當於是對一塊資料儲存 空間的命名,程式可以通過定義乙個變數來申請一塊資料儲存空間,之後可以通過引用變數名來 使用這塊儲存空間。go語言中的變數使用方式與c語言接近,但具備更大的靈活性。1.1 變數...

01 Go 順序程式設計

go 的 bool 型別不支援 其他型別的強制轉換 int型別和int32被認為是兩種不同的型別。編譯器不會做自動轉換 複數的表示 var value1 complex64 value1 3.2 12i real 實部 imag 虛部 字元型別 rune 代表單個unicode字元 byte 代表u...