تبدیل نوع (Type Conversion)
تبدیل صریح بین انواع داده در Go: عددی، رشته و بایت با strconv.
تبدیل نوع در Go
Go برخلاف برخی زبانها هرگز خودکار تبدیل نوع نمیکند — حتی بین int و float64! همه تبدیلها باید صریح باشند:
تبدیل عددی
var i int = 42
var f float64 = float64(i) ← int → float64
var j int = int(f) ← float64 → int (بخش اعشاری حذف!)
// تقسیم صحیح در مقابل اعشاری
a, b := 7, 2
fmt.Println(a / b) ← 3
fmt.Println(float64(a) / float64(b)) ← 3.5
تبدیل float به int بخش اعشاری را قطع میکند (گرد نمیکند):
int(3.9) میشود 3!تبدیل به/از رشته
عدد ↔ رشته با strconv
import "strconv"
// عدد → رشته
s := strconv.Itoa(42) ← "42"
sf := strconv.FormatFloat(3.14, \f\, 2, 64) ← "3.14"
// رشته → عدد
n, err := strconv.Atoi("42") ← 42
f, err := strconv.ParseFloat("3.14", 64) ← 3.14
تابع
strconv.Itoa (Integer to ASCII) رایجترین راه تبدیل عدد به رشته است. fmt.Sprintf هم کار میکند اما کندتر است.رشته ↔ بایت
s := "سلام"
b := []byte(s) ← رشته → slice بایت
s2 := string(b) ← بایت → رشته
رشته ↔ rune
r := rune(65) ← A
s := string(r) ← "A"
runes := []rune("سلام")
s := string(runes)
خطا در تبدیل
توابع Parse خطا برمیگردانند — همیشه بررسی کنید:
n, err := strconv.Atoi("abc")
if err != nil {
fmt.Println("خطا: رشته عدد نیست!")
} else {
fmt.Println("عدد:", n)
}
تبدیلهای رایج — جدول مرجع
| از | به | روش |
|---|---|---|
| int | float64 | float64(x) |
| float64 | int | int(x) |
| int | string | strconv.Itoa(x) |
| string | int | strconv.Atoi(s) |
| string | float64 | strconv.ParseFloat(s, 64) |
| string | []byte | []byte(s) |
| []byte | string | string(b) |
| int | rune | rune(x) |
این مبحث بخشی از دوره آموزش کامل گو است.