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