میثم پورگنجی
میثم پورگنجی
خواندن ۱ دقیقه·۷ سال پیش

آدرس‌پذیری در گو

دیو چنی توییت کرده که کد زیر چی چاپ میکنه؟

package main import "fmt" func f(u *uint) {*u++} func main() { i := 0 ‌f(&(uint)(i)) fmt.Println(i) }

بالطبع احتمالا همه انتظار داریم حاصل ۱ باشه، ولی این کد اصلا کامپایل نمیشه :)). دلیل خیلی ساده‌ست: «در گو شما فقط میتونی آدرس چیزایی رو استفاده کنی که آدرس‌پذیر باشن.». به بیان دیگه در گو فقط برای متغیرها، پوینترها، اسلایس‌ها، عناصر یک ساختار -=struct- و آرایه‌ها میشه آدرس رو داشت و پر واضح و مبرهن‌ه که در کد فوق، پارامتر ورودی f هیچ‌کدوم از اونها نیست. در این مورد اینجا رو ببینید.

در گو شما فقط میتونی آدرس چیزایی رو استفاده کنی که آدرس‌پذیر باشن.
در گو شما فقط میتونی آدرس چیزایی رو استفاده کنی که آدرس‌پذیر باشن.

پ.ن یک: امیدوارم خیلی زود، ابزار خوشگلازیسون کد به ویرگول اضافه شه.
پ.ن دو: ابزار پ.ن یک اضافه شد (۹ مرداد ۱۳۹۶).

گوفوت کوزه‌گری
مهندسی داده، برنامه‌نویسی و ریاضی
شاید از این پست‌ها خوشتان بیاید