# GO語言的類型有哪些
Go語言(又稱Golang)作為一門靜態類型、編譯型語言,其類型系統設計簡潔而強大。本文將全面解析Go語言中的類型系統,涵蓋基本類型、復合類型、引用類型、接口類型以及類型定義與別名等核心概念。
---
## 一、基本類型(Basic Types)
Go語言的基本類型分為以下四大類:
### 1. 布爾類型(bool)
- 只有兩個值:`true` 和 `false`
- 默認值為 `false`
- 常用于條件判斷和邏輯運算
```go
var isActive bool = true
類型 | 位數 | 范圍 |
---|---|---|
int8 | 8 | -128 ~ 127 |
int16 | 16 | -32768 ~ 32767 |
int32/rune | 32 | -2^31 ~ 2^31-1 |
int64 | 64 | -2^63 ~ 2^63-1 |
uint8/byte | 8 | 0 ~ 255 |
uint16 | 16 | 0 ~ 65535 |
uint32 | 32 | 0 ~ 2^32-1 |
uint64 | 64 | 0 ~ 2^64-1 |
int/uint | 平臺相關(32或64位) |
注意:
rune
是int32
的別名,表示Unicode碼點;byte
是uint8
的別名。
float32
:32位單精度浮點(約6位小數精度)float64
:64位雙精度浮點(默認類型,約15位小數精度)var pi float64 = 3.141592653589793
complex64
(實部和虛部各32位)complex128
(默認類型,實部和虛部各64位)var c complex128 = 3 + 4i
""
或反引號 `
(原始字符串)str := "Hello, 世界"
[3]int
和 [5]int
是不同的類型)var arr [3]int = [3]int{1, 2, 3}
make()
創建或從數組切片s := make([]int, 0, 5) // 長度0,容量5
s = append(s, 1, 2, 3) // 動態擴展
type Person struct {
Name string
Age int
Contact struct {
Phone string
Email string
}
}
make()
初始化m := make(map[string]int)
m["age"] = 25
Go中的引用類型包括: - 切片(Slice) - 映射(Map) - 通道(Channel) - 函數(Function) - 指針(Pointer)
特點:這些類型的變量存儲的是底層數據的引用(內存地址),而非數據本身。
*T
表示指向類型T的指針&
取地址,*
解引用var x int = 10
p := &x // p的類型是*int
fmt.Println(*p) // 輸出10
type Writer interface {
Write([]byte) (int, error)
}
any
別名替代func Print(v interface{}) {
fmt.Println(v)
}
type Handler func(string) int
func process(h Handler) {
result := h("input")
// ...
}
make()
創建,需指定元素類型ch := make(chan int, 10) // 緩沖通道
type error interface {
Error() string
}
type Celsius float64 // 新類型,與float64不能直接運算
type String = string // 只是別名
:=
語法可自動推斷變量類型var i int = 42
var f float64 = float64(i)
var val interface{} = "hello"
s, ok := val.(string) // ok為true時轉換成功
通過本文的詳細解析,我們可以看到Go語言的類型系統既保持了簡潔性,又提供了足夠的表達能力。理解這些類型特性是編寫高效、健壯Go程序的基礎。 “`
本文共計約1750字,全面覆蓋了Go語言的類型系統,采用Markdown格式編寫,包含代碼示例和表格對比,適合作為技術文檔或博客文章。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。