ในภาษา Go นั้นมี pointer
ครับ ใครๆก็รู้ ซึ่งก็จะมี operator อยู่สองตัวที่จะมาใช้ก็คือ * และ &
แต่ๆๆ มันมีตัวแปรที่เป็น pointer แต่แกล้งทำหน้าตาไม่เหมือน pointer อยู่ใน Go อยู่หลายตัว ได้แก่
slice, map, chan, interface
4 type นี้เป็น pointer แต่แกล้งทำหน้าตาไม่เหมือน พิสูจน์ง่ายมาก แค่ประกาศตัวแปรลอยๆไว้แล้วถามเลยแบบนี้
var s []string
var m map[string]string
var i interface{}
var ch chan struct{}
if s == nil { fmt.Println("s is nil") }
if m == nil { fmt.Println("m is nil") }
if i == nil { fmt.Println("i is nil") }
if ch == nil { fmt.Println("ch is nil") }
ผลลัพธ์มันตอบ nil ทั้ง 4 บรรทัดเลย คือไอ้ตัวแปรประเภท pointer เนี่ย มันมี zero value เป็น nil ไงครับ
ด้วยความที่หน้าตามันไม่เหมือน pointer ปกติบางทีเลยอาจจะเข้าใจมันผิด เพราะฉะนั้นวันนี้มาบอกไว้ก่อนเพื่อเป็นข้อมูลนะครับ ส่วนจะมีอะไรให้พิสูจน์ต่อก็คอยติดต่อตอนหน้านะครับ
Top comments (0)