انواع داده
انواع داده پایه در Go: اعداد صحیح، اعشاری، رشته، بولی و انواع پیشرفته.
انواع داده در Go
Go یک زبان ایستا-تایپ است — یعنی نوع هر متغیر باید در زمان کامپایل مشخص باشد. انواع داده در Go به سه دسته تقسیم میشوند:
۱. انواع پایه (Basic)
| دسته | انواع | مثال |
|---|---|---|
| اعداد صحیح | int, int8, int16, int32, int64 | 42 |
| اعداد بدون علامت | uint, uint8, uint16, uint32, uint64 | 42 |
| اعداد اعشاری | float32, float64 | 3.14 |
| اعداد مختلط | complex64, complex128 | 1+2i |
| رشته | string | "سلام" |
| بولی | bool | true / false |
| بایت و رونما | byte (=uint8), rune (=int32) | \A\, گ |
۲. انواع ترکیبی (Aggregate)
- آرایه (Array): مجموعهای با طول ثابت از یک نوع
- ساختار (Struct): ترکیبی از انواع مختلف
۳. انواع مرجع (Reference)
- برش (Slice): آرایه انعطافپذیر
- نقشه (Map): کلید-مقدار
- کانال (Channel): ارتباط بین Goroutine ها
- اشارهگر (Pointer): آدرس حافظه
- تابع (Function): نوع تابع
int در مقابل int8/int64
نوع int بسته به معماری سیستم ۳۲ یا ۶۴ بیتی است. برای اکثر کاربردها int کافی است:
var a int = 42 ← پیشفرض و توصیهشده
var b int8 = 127 ← حداکثر ۱۲۷!
var c int64 = 9e18 ← اعداد خیلی بزرگ
اگر عددی خارج از محدوده نوع قرار گیرد، سرریز (Overflow) رخ میدهد و نتیجه غلط میشود — بدون خطا!
رشته (string)
رشته در Go دنبالهای از بایتها است (معمولاً UTF-8):
s := "سلام"
fmt.Println(len(s)) ← ۸ (هر حرف فارسی ۲ بایت)
fmt.Println(s[0]) ← کد بایت اول
بولی (bool)
isReady := true
isFinished := false
fmt.Println(isReady && !isFinished) ← true
بررسی نوع با %T
با فعل قالب %T در Printf میتوانید نوع هر مقدار را ببینید:
fmt.Printf("%T\n", 42) ← int
fmt.Printf("%T\n", 3.14) ← float64
fmt.Printf("%T\n", "سلام") ← string
fmt.Printf("%T\n", true) ← bool
این مبحث بخشی از دوره آموزش کامل گو است.