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

خرید بک لینک

۱۸ اردیبهشت ۱۳۹۷: این پست برای اولین بار در ویرگول به این نشانی منتشر شده است.

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

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

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

انشقاق در ناحیه میانی...

ما را در سایت انشقاق در ناحیه میانی دنبال می‌کنید

برچسب: نویسنده: بازدید: 105 تاريخ: پنجشنبه 3 خرداد 1397 ساعت: 12:44

صفحه بندی