Pointer เป็น Concept พื้นฐานในงาน Computer Science และมีอยู่ในหลาย Programming Language, ซึ่งใน Go มีคุณสมบัตินี้อยู่. Pointer เป็นตัวแปรที่จัดเก็บไว้บน Memory address ของตัวแปรทั้งหมด. ซึ่งจะช่วยให้เราจัดการกับ Memory ได้โดยตรงหรือทำการอ้างอิงถึงตัวแปรนั้นๆได้. เราจะสังเกตุได้ว่าตัวแปรไหนเป็น pointer โดยตัวแปรนั้นจะมีสัญลักษณ์ * ประกอบอยู่ด้วยในตอนประกาศตัวแปรหรือตอนใช้งาน
ตัวอย่าง:
// n := 2
// double(&n)
// n == 4
func double(n *int) {
*n = *n + 2
}
// name := "Bob"
// appendGreeting(&name)
// name == "Hi, Bob"
func appendGreeting(s *string) {
*s = "Hi, " + *s
}
ต่อมาจะขอยกตัวอย่างการใช้งาน pointer จาก func ตัวอย่างด้านบน
import "fmt"
func main() {
n := 2
double(&n)
fmt.Println(n)
// 4
name := "Bob"
appendGreeting(&name)
fmt.Println(name)
// Hi, Bob
}
func double(n *int) {
*n = *n + 2
}
func appendGreeting(s *string) {
*s = "Hi, " + *s
}
อธิบายเพิ่มเติม จาก code ด้านบนจะประกอบไปด้วย 3 function
func main คือ ตัวที่ทำการ run และ implement function ต่างๆจากตัวอย่างด้านมาใช้งาน โดยมีการ สร้างตัวแปรพร้อม assign value และส่งไปเป็น Parameter ของ function ตัวอย่าง
func double(n *int) จะทำหน้าที่เปลี่ยนแปลงค่า pointer ที่ส่งมากับ parameter n *int โดยมีการคำนวณและ assign. ค่ากลับไปให้ตัวแปร pointer
func appendGreeting(s *string) จะทำงานเหมือนข้อ 2 ที่กล่าวมาแตกต่างตรงที่เป็นตัวแปร type string
Developer ท่านไหนกำลังสนใจ Go สามารถนำไปศึกษาเพิ่มเติมต่อได้ครับ หวังจะเป็นประโยชน์กับหลายๆคนนะครับ
Source Code : https://github.com/header-dev/go-fundam.git
Top comments (0)