در جست و جوی خود
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
مطلبی دیگر از این انتشارات
21.آموزش GO با مثال(خطاها)
مطلبی دیگر از این انتشارات
10.آموزش GO با مثال(آرایه maps)
مطلبی دیگر از این انتشارات
20.آموزش GO با مثال(اینترفیس ها)