12/04/2026 18:16น.

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
}