การดู : 0

12/04/2026 18:16น.

EP.6 Go กับ Pointers - ควบคุมหน่วยความจำได้อยู่หมัด!

EP.6 Go กับ Pointers - ควบคุมหน่วยความจำได้อยู่หมัด!

#การเขียนโปรแกรม Go

#nil Pointer

#การควบคุมหน่วยความจำ

#Pointers

#Go

Go กับ Pointers - ควบคุมหน่วยความจำได้อยู่หมัด!

เคยสงสัยไหมว่าโปรแกรมจัดการข้อมูลในหน่วยความจำได้อย่างไร? Pointers ใน Go จะช่วยให้คุณเข้าถึงและแก้ไขค่าผ่านที่อยู่หน่วยความจำโดยตรง

Pointers คืออะไร?

ในภาษา Go, Pointer เป็นตัวแปรที่เก็บ ที่อยู่หน่วยความจำ ของค่าหรือตัวแปรอื่น ช่วยให้เราสามารถเข้าถึงและแก้ไขค่าผ่านหน่วยความจำโดยตรงได้
ตัวอย่าง:

package main

import "fmt"

func main() {
    x := 10
    ptr := &x // เก็บที่อยู่ของตัวแปร x
    fmt.Println("Address of x:", ptr) // แสดงที่อยู่หน่วยความจำ
    fmt.Println("Value of x:", *ptr)  // ดึงค่า x ผ่าน pointer
}

 

การใช้ Pointer ในฟังก์ชัน

ฟังก์ชันสามารถรับค่าโดยการอ้างอิงผ่าน Pointer ทำให้สามารถแก้ไขค่าของตัวแปรต้นทางได้โดยตรง:

func changeValue(num *int) {
    *num = 100
}

func main() {
    x := 10
    changeValue(&x)
    fmt.Println("Updated value of x:", x) // Output: 100
}

 

การจัดการหน่วยความจำใน Go

Go มี Garbage Collector ที่ช่วยจัดการหน่วยความจำโดยอัตโนมัติ แต่การเข้าใจการใช้ Pointer จะช่วยให้คุณเขียนโปรแกรมที่มีประสิทธิภาพและหลีกเลี่ยงการใช้หน่วยความจำเกินความจำเป็น

Nil Pointer และการตรวจสอบ Pointer

Pointer ที่ไม่ได้ชี้ไปที่ตัวแปรใดๆ จะมีค่าเป็น nil:

var ptr *int
if ptr == nil {
    fmt.Println("Pointer is nil")
}

 

สามารถลองสร้างฟังก์ชันที่ใช้ Pointer ในการสลับค่าของตัวแปรสองตัว
ตัวอย่าง:

func swap(a, b *int) {
    temp := *a
    *a = *b
    *b = temp
}

func main() {
    x, y := 1, 2
    swap(&x, &y)
    fmt.Println("x:", x, "y:", y) // Output: x: 2 y: 1
}