در جست و جوی خود
17.آموزش GO با مثال(اشاره گرها)

گو از اشاره گرها پشتیبانی میکند, اجازه میده تا ارجاعات رو به مقادیر و رکوردها درون برنامتون بدید.
package main
import "fmt"اینجا ما نشون میدیم که چگونه اشاره گرها در مقابل مقادیر کار میکنند با دو تابع: zeroval و zeroptr zeroval یک پارامتر intدارد, بنابراین آرگومان در اینجا ارجاع با مقدار میشود. zeroval یک کپی از ival را میگیرد و اون رو از فرم اصلی با ارجاع به تابع متمایز میکند.
func zeroval(ival int) {
ival = 0
}وzeroptr در مقابل *int یک پارامتر دارد, به این معنا که یک اشاره گر int را میگیرد. *iptr کدی است در بدنه تابع سپس اشاره گر را از آدرس حافظه خود به مقدار درست آن در حافظه برمیگرداند. اختصاص دادن یک مقدار به مقدار بازگردانده شده از ارجاع ،ارزش مقدار رو در آدرس ارجاع داده شده تغییر میدهد.
func zeroptr(iptr *int) {
*iptr = 0
}
func main() {
i := 1
fmt.Println("initial:", i)
zeroval(i)
fmt.Println("zeroval:", i)نحو i& آدرسی از حافظه را به i،میدهد به عنوان مثال یک اشاره گر به i.
zeroptr(&i)
fmt.Println("zeroptr:", i)همچنین اشاره گرها میتونن نمایش داده بشن.
fmt.Println("pointer:", &i)
}تابعzeroval مقدار i را در mainتغییر نمیدهد، اما zeroptr این کار را انجام میدهد چون این یک ارجاع به حافظه را برای این متغییر را دارد.
$ go run pointers.go
initial: 1
zeroval: 1
zeroptr: 0
pointer: 0x42131100
مطلبی دیگر از این انتشارات
1.آموزش GO با مثال(سلام دنیا)
مطلبی دیگر از این انتشارات
9.آموزش GO با مثال(آرایه های برشی)
مطلبی دیگر از این انتشارات
10.آموزش GO با مثال(آرایه maps)