1. 程式人生 > >golang中的型別及型別轉換指南

golang中的型別及型別轉換指南

在這篇文章中,我們將研究golang中使用的不同資料型別,以及如何在不同資料型別間進行轉換。在我們研究型別轉換的不同方法之前,讓我們先來討論一下golang中一些最常用的資料型別。

golang中的資料型別

下面是您將在golang中使用到的幾種資料型別:

  • 布林(bool)型別。它用來儲存一組布林真值,它可以是true或false.
  • 字串(string)型別。golang中的字串,是使用給定的字元編碼方案,實現儲存一系列字元的位元組。[A Golang string is implemented as a set of bytes that store a sequence of characters, using a given character encoding scheme.]
  • 整型(int)型別。golang中的int資料型別,可以儲存不同大小的整型資料,包括8位的int8,16位的int16,32位的int32以及64位的int64。
  • 無符號(unit)型別。它表示無符號整數(長度不同的整數型別)。例如, uint8 為 8位, uint8 用於 16位, uint8 用於 32位, uint8 用於64位。
  • 位元組(byte)型別。它儲存8位的整數值,和uint8一樣
  • 浮點型(float32、float64)型別。它用於儲存32位以及64位的浮點型數值。
  • 複數(complex64、complex128)型別。它用於表示64位以及128位的複數。

那關於型別轉換呢?

那麼,型別轉換允許程式設計師將一種資料型別轉換成另外一種資料型別。你可能會問:我為什麼要在golang中進行型別轉換呢?好吧,如果你需要使用資料型別層面的某些特性,那你就不得不將資料實體從一種資料型別轉換為另外一種資料型別。

比如,如果你有一個位元組或者unit8的資料,而且,你希望將它轉換成更大的資料型別來進行算術運算,那麼你就需要用到型別轉換。所以,你準備好開始學習golang的型別轉換了嗎?

讓我們更深入一些吧!

在golang中,我們使用表示式T(v)的格式來將資料v轉換成型別T的資料。下面的例子說明了如何將數值從一種資料型別轉換成另外一種資料型別:

var amount int = 80
var amount2 float64 = float64 (amount)
var amount3 uint = uint (f)

可以簡化成:

amount: = 80
amount2:= float64 (amount)
amount3:= uint (f)

golang中型別轉換,需要注意的幾點是:如果對不同的資料型別賦值,則必須進行顯示轉換。這就是為什麼在golang的型別轉換中,區分使用": =" 或 "var = 表達"是很重要的。

例如,當宣告一個變數而不指定為顯式資料型別 (通過使用 “: = 語法” 或 “var = 表示式語法”) 時,將從右側顯示的值推斷變數的資料型別。如果宣告的右側是型別化的, 則新變數將具有相同的資料型別。下面是例子:

var amount int
amount1:= amount // In this case, amount is of int data type

現在,當等式右邊是一個不確定型別的資料會時,發生什麼情況呢?那麼,當等式右邊是一個不確定型別的數值常量時,則變數(在這個例子中是amount1)可能會根據你給定的常量的精度,被賦值一個int,float64,甚至complex128的數值。

下面的示例,剛好說明了這一點:

i: = 42             // This is an int data type depending on the accuracy. 
pi: = 3.142         // This is a float64 data type depending on the precision. 
b := 0.867 + 0.5i   // This is a complex128 depending on the precision. 

原文連結:http://blog.stoneriverelearning.com/a-guide-to-types-and-casting-in-golang/