Go - 數據類型:初学者的友好指南

你好啊,有抱負的程序员!你準備好跳進Go編程的精彩世界了嗎?今天,我們將探討Go中一個基本概念:數據類型。如果你從未寫過一行代碼,也不要擔心——我會一步步引導你,就像我過去幾年來為無數學生做的那樣。讓我們開始吧!

Go - Data Types

什麼是數據類型?

在我們深入具體內容之前,讓我們先了解一下數據類型是什麼。想像你正在籌備一個大型派對(很有趣,對吧?)你需要記錄不同類型的信息:

  • 賓客數量(一個整數)
  • 每人的食物成本(一個帶小數的數字)
  • 這是不是一個驚喜派對(是或不是)
  • 荣譽賓客的名字(一串字母)

在編程中,我們使用不同的數據類型來表示這些不同類型的信息。Go語言,作為一種考慮周到的語言,為我們提供了多種數據類型以供使用。

整數類型

讓我們從整數類型開始。這些用於表示整數,比如我們派對上的賓客數量。

基本整數類型

Go提供了多種整數類型,它們在大小和是否能夠表示負數方面有所不同:

類型 大小(位) 范圍
int8 8 -128 至 127
int16 16 -32,768 至 32,767
int32 32 -2,147,483,648 至 2,147,483,647
int64 64 -9,223,372,036,854,775,808 至 9,223,372,036,854,775,807
uint8 8 0 至 255
uint16 16 0 至 65,535
uint32 32 0 至 4,294,967,295
uint64 64 0 至 18,446,744,073,709,551,615

讓我們看看如何在代碼中使用它們:

package main

import "fmt"

func main() {
var partyGuests int = 50
var smallPartyGuests int8 = 10
var hugePartyGuests uint64 = 1000000

fmt.Println("Regular party guests:", partyGuests)
fmt.Println("Small party guests:", smallPartyGuests)
fmt.Println("Huge party guests:", hugePartyGuests)
}

在這個例子中,我們聲明了用於存儲不同類型派對賓客數量的變量。int類型用於普通派對,int8用於小型聚會(因為我們知道它不會超過127),而uint64用於龐大的慶典(以防我們正在籌備一個全市性的活動!)。

'int' 和 'uint' 類型

Go還提供了intuint類型,它們至少有32位,但根據系統的不同可能會更大。它們通常是最方便的選擇,當你不需要特定大小時。

var flexibleNumber int = 42
var positiveFlexibleNumber uint = 42

在這裡,flexibleNumber可以是正數或負數,而positiveFlexibleNumber永遠是非負數。

浮點類型

現在,讓我們來談談浮點數。這些用於帶小數點的數字,比如我們派對食物的每人成本。

Go提供了兩種浮點數類型:

類型 大小(位) 精度
float32 32 約7個十進制數字
float64 64 約15個十進制數字

讓我們看看它們如何在代碼中工作:

package main

import "fmt"

func main() {
var costPerPerson float32 = 15.50
var totalBudget float64 = 1000.75

fmt.Printf("Cost per person: $%.2f\n", costPerPerson)
fmt.Printf("Total budget: $%.2f\n", totalBudget)
}

在這個例子中,我們使用float32來表示每人成本(因為我們不需要極高的精確度),並使用float64來表示總預算(我們可能需要更多的十進制位來進行精確計算)。

%.2fPrintf函數中告訴Go以兩位小數顯示浮點數。

其他數字類型

Go提供了一些在特定情況下非常有用的其他數字類型。

複數

是的,Go可以處理複數!它提供了兩種類型:

類型 描述
complex64 實部和虛部為float32的複數
complex128 實部和虛部為float64的複數

這裡有一個快速的例子:

package main

import "fmt"

func main() {
var c64 complex64 = 1 + 2i
var c128 complex128 = 3 + 4i

fmt.Println("Complex64:", c64)
fmt.Println("Complex128:", c128)
}

雖然你可能不會經常使用複數,但知道Go在你需要時支持它們是件好事!

Byte 和 Rune

Go還有兩個整數類型的別名,在特定上下文中使用:

類型 別名 for 常見用途
byte uint8 表示一個數據字节
rune int32 表示一個Unicode代碼點

這是如何使用它們的例子:

package main

import "fmt"

func main() {
var b byte = 65
var r rune = 'A'

fmt.Printf("Byte %d represents: %c\n", b, b)
fmt.Printf("Rune %d represents: %c\n", r, r)
}

在這個例子中,br都代表字母'A',但以不同的方式。b使用ASCII值,而r使用Unicode代碼點。

總結

我們今天涵蓋了很多內容。從整數到浮點數,甚至複數,Go提供了豐富的數據類型來工作。記住,選擇正確的數據類型就像為工作選擇正確的工具一樣——它可以讓你的代碼更有效率和避免錯誤。

當你繼續你的Go之旅時,你會逐漸對這些類型感到熟悉,並學習在何時使用每一個。如果一开始感到不知所措——這完全是正常的!就像學習騎自行車一樣,需要練習,但在你意識到之前,你會像專家一樣快速穿梭於Go代碼中。

繼續編程,持續學習,最重要的是,玩得開心!畢竟,編程有點像計劃一個完美的派對——它關於將正確的元素聚集在一起創造出令人驚艷的東西。快樂編程!

Credits: Image by storyset