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