DEV Community

Cover image for Go: The Fundamentals - Pointer
Kritawit.Ya
Kritawit.Ya

Posted on

Go: The Fundamentals - Pointer

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
}
Enter fullscreen mode Exit fullscreen mode

ต่อมาจะขอยกตัวอย่างการใช้งาน 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
}
Enter fullscreen mode Exit fullscreen mode

อธิบายเพิ่มเติม จาก code ด้านบนจะประกอบไปด้วย 3 function

  1. func main คือ ตัวที่ทำการ run และ implement function ต่างๆจากตัวอย่างด้านมาใช้งาน โดยมีการ สร้างตัวแปรพร้อม assign value และส่งไปเป็น Parameter ของ function ตัวอย่าง

  2. func double(n *int) จะทำหน้าที่เปลี่ยนแปลงค่า pointer ที่ส่งมากับ parameter n *int โดยมีการคำนวณและ assign. ค่ากลับไปให้ตัวแปร pointer

  3. func appendGreeting(s *string) จะทำงานเหมือนข้อ 2 ที่กล่าวมาแตกต่างตรงที่เป็นตัวแปร type string

Developer ท่านไหนกำลังสนใจ Go สามารถนำไปศึกษาเพิ่มเติมต่อได้ครับ หวังจะเป็นประโยชน์กับหลายๆคนนะครับ

Source Code : https://github.com/header-dev/go-fundam.git

Top comments (0)