len และ cap ของ slice

ข้อมูลแบบ array และ slice นั้นสามารถหาจำนวนที่เก็บอยู่ได้โดยใช้ function ที่ชื่อ len ซึ่งเป็น builtin function ของ Go ตัวอย่างเช่น l := [3]int {1, 2, 3} println( len(l) )  /* ได้ค่า 3 */ ส่วน slice จะต่างกับ array ตรง ค่า len ที่หาได้ เป็นจำนวนค่าที่ slice เก็บอยู่ แต่เนื้อที่หน่วยความจำที่ slice สามารถใช้ได้จริงๆอาจจะมีมากกว่านั้น เพราะ slice ทำหน้าที่ slice แค่บางส่วนออกมา การสร้าง slice โดยกำหนดทั้งจำนวนข้อมูล และ จำนวนหน่วยความจำสามารถทำได้ดังนี้ l := make([]int, 3, […]

Continue reading →

ข้อมูลแบบ slice

จากคราวก่อนที่บอกว่า array นั้นเป็นข้อมูลที่กำหนดขนาดชัดเจน array ที่มีขนาดต่างกัน ถือว่าเป็นข้อมูลคนละประเภทกันเลย เช่น var a [5]int var b [10]int ถือว่า a และ b เป็นข้อมูลคนละแบบ a เป็น array ของ int ขนาด 5 ตัว และ b เป็น array ของ int ขนาด 10 ตัว ทีนี้ ถ้าเราต้องการจัดการ array ที่มีขนาดต่างๆกัน เราจะทำอย่างไร สำหรับ Go ได้สร้างข้อมูลอีกประเภทขึ้นมาเลยคือ slice นั่นเอง   การประกาศตัวแปรของ slice การประกาศตัวแปรของ slice ทำได้เกือบเหมือน array ต่างกันตรงไม่ต้องกำหนดขนาดนั่นเอง เช่น var […]

Continue reading →