متغیرهای تایپ شده و بدون تایپ (یا ثابت) در GO (Golang)

در Go (Golang) ، تمایز بین تایپ شده وت بدون علامت متغیرها (یا ثابت) برای درک نحوه برخورد با مقادیر توسط کامپایلر مهم است.
1 متغیرهای تایپ شده
- بوها متغیر تایپ شده در زمان کامپایل یک نوع صریح تعریف شده دارد.
- هنگامی که یک نوع به یک متغیر اختصاص داده می شود ، نمی تواند مقادیر نوع دیگری را بدون تبدیل صریح نگه دارد.
- متغیرهای تایپ شده برای ایمنی نوع در زمان کامپایل بررسی می شوند.
مثال:
var x int = 42 // x is explicitly typed as `int`
var y float64 = 3.14 // y is explicitly typed as `float64`
در این حالت ، x
فقط می تواند مقادیر عدد صحیح را نگه دارد ، و y
فقط می تواند مقادیر نقطه شناور را نگه دارد.
2 متغیرهای بدون نسخه (یا ثابت)
- در متغیر بدون نسخه (یا ثابت) نوع خاصی ندارد که در زمان کامپایل به آن اختصاص داده شود.
- در عوض ، آن را دارد نوع پیش فرض این بر اساس زمینه ای که در آن استفاده می شود استنباط می شود.
- مقادیر بدون استفاده از انعطاف پذیر است و می تواند در زمینه هایی که انواع مختلفی انتظار می رود ، تا زمانی که سازگار باشند ، استفاده شود.
مثال:
const z = 42 // z is an untyped constant
در اینجا z
ثابت ثابت است نوع آن به صراحت تعریف نشده است ، بنابراین می تواند در زمینه های مختلفی که در آن استفاده می شود استفاده شود int
با float64
، یا سایر انواع سازگار انتظار می رود.
تفاوت های کلیدی
جنبه | متغیرهای تایپ شده | متغیرها/ثابت های بدون نسخه |
---|---|---|
تعریف نوع | صریح تعریف شده (به عنوان مثال ، int با float64 ) |
بدون نوع صریح ؛ استنباط شده از متن |
انعطاف پذیری | محدود به نوع اعلام شده | در زمینه های مختلف قابل استفاده است |
ایمنی تایپ | در زمان کامپایل اجرا می شود | انعطاف پذیر ، اما ممکن است به تبدیل های ضمنی منجر شود |
نمونه | var x int = 42 |
const z = 42 |
نمونه ای از ثابت های بدون نسخه در عمل
package main
import "fmt"
func main() {
const untypedConst = 42 // untyped constant
var a int = untypedConst // works: untypedConst is treated as int
var b float64 = untypedConst // works: untypedConst is treated as float64
fmt.Println(a, b) // Output: 42 42
}
در این مثال ، untypedConst
ثابت ثابت است می توان آن را به هر دو اختصاص داد int
وت float64
متغیرهای بدون تبدیل صریح زیرا نوع آن بر اساس زمینه استنباط می شود.
انواع پیش فرض برای ثابت های بدون نسخه
هنگامی که از ثابت بدون نسخه در زمینه ای استفاده می شود که یک نوع مورد نیاز باشد ، کامپایلر آن را اختصاص می دهد نوع پیش فرض بر اساس ارزش آن:
- به معنای واقعی کلمه:
int
- لفظهای نقطه شناور:
float64
- لفظهای پیچیده:
complex128
- LITERALS RUNE:
rune
(نام مستعار برایint32
) - رشته های رشته ای:
string
مثال:
const c = 42 // default type: int
const d = 3.14 // default type: float64
const e = "hello" // default type: string