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

دیو چنی توییت کرده که کد زیر چی چاپ میکنه؟ package main import "fmt" func f(u *uint) { *u++ } func main() { i := 0 f(&(uint)(i)) fmt.Println(i) } بالطبع احتمالا همه انتظار داریم حاصل ۱ باشه، ولی این کد اصلا کامپایل نمیشه :)). دلیل خیلی ساده‌ست: «در گو شما فقط میتونی آدرس چیزایی رو استفاده کنی که آدرس‌پذیر باشن.». به بیان دیگه در گو فقط برای متغیرها، پوینترها، اسلایس‌ها، عناصر یک ساختار -=struct- و آرایه‌ها میشه آدرس رو داشت و پر واضح و مبرهن‌ه که در کد فوق، پارامتر ورودی f هیچ‌کدوم از اونها نیست. در این مورد اینجا رو ببینید. ...

10 سپتامبر 2017