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