[ Golang ] หัดเขียน Golang | Part.2 [ Pointer ]
สวัสดีครับทุกคนน เรามา Note Golang 💕 กันต่ออ สำหรับ Part .1 ลิ้งค์ตามด้านล่างเลยย 👇
[ Golang ] หัดเขียน Golang | Part.1 | by Siriwat J. | Jan, 2021 | Medium
Pointer ในภาษา Go
pointer คืออะไร ?
Pointer คืออะไร ? — BorntoDev เริ่มต้นเรียน เขียนโปรแกรม ขั้นเทพ !
โดยคร่าวๆ ตัวแปร Pointer คือตัวแปรที่เก็บค่า Address ของตัวแปร (?)
การเข้าถึงค่า Address ใน Go
เราจะใช้ ampersand (&) ในการแสดงค่า address เช่น
var myInt int = 8
สมมุติเราให้ myInt อยู่ที่ Address ที่ 0xc0000b4008
fmt.Println(&myInt) //output จะได้ 0xc0000b4008
การประกาศตัวแปร Pointer
var ชื่อตัวแปร *<type>
เช่น
var myPointerOfInt *int
var myPointOfFloat *float64
Note : ค่า zero value ของ pointer คือ <nil>
เราสามารถเก็บค่า Address ได้ดังนี้
ในที่นี้เราสมมุติให้ myInt อยู่ที่ Address 0xc0000b4008
var myInt int = 8 // สร้างตัวแปร intvar myPointerOfInt *int // สร้าง Pointer myPointerOfInt = &myInt // ให้ Pointer ที่ชื่อ myPointerOfInt เก็บ Address ของ myIntfmt.Println(myPorinterOfInt)//Output 0xc0000b4008
การเปลี่ยนค่าของตัวแปร ที่ Pointer ชี้อยู่
เราสามารถเปลี่ยนค่าตัวแปรได้โดยใช้ (*) วางไว้หน้า Pointer
จากด้านบน myInt = 8
เราสามารถเข้าถึงค่า myInt จาก pointer ได้โดยใช้ *myPointerOfInt
var myInt int = 8 var myPointerOfInt *int myPointerOfInt = &myInt fmt.Println(myInt) // Output 8fmt.Println(*myPointerOfInt) // output (มันคือค่าของ myInt)
*myPointerOfInt = 9 // กำหนดค่าใหม่fmt.Println(myInt) // Output 9fmt.Println(*myPointerOfInt) // Output 9