บทเรียนการเขียนโปรแกรมด้วยภาษา Go กับคำสั่งเบื้องต้นการสร้าง Function Scope และการใช้งาน Array สำหรับนักพัฒนาเบื้องต้น
ศึกษาบทเรียนก่อนหน้าได้ที่:
- การเขียนโปรแกรม ภาษา Go
- การเขียนโปรแกรมภาษา Go กับเรื่องของ Decision Making
- การเขียนโปรแกรมภาษา Go ฟังก์ชันการวนซ้ำ Loops
บทเรียนนี้เราจะทำความรู้จักกับ Function Scope และ Array ครับ
การเรียกใช้ฟังก์ชัน Function
รูปแบบการเรียกใช้ Function ในภาษา Go นั้นจะมีความคล้ายกับภาษา Python และ C เขียนได้ดังนี้:
func function_name( [parameter list] ) [return_types] { body of the function }
- function_name ก็คือชื่อฟังก์ชันที่เราตั้งขึ้นมา ยอดฮิตคือ Min(), Max() หรือ Len() เป็นต้น
- parameter list ทั้งสองแยกออกมาคือ parameter เป็นตัวแปร ส่วน list ก็คือประเภทของตัวแปร
- return_types คือสิ่งที่ฟังก์ชันจะทำการส่งค่ากลับนั่นเองครับ
มาดูตัวอย่างการประกาศดีกว่า:
func MyMaxValue(val1, val2 int) int { result int if (val1 > val2) { result = val1 } else { result = val2 } return result }
อธิบายก็คือเราจะสร้างฟังก์ชันชื่อว่า MyMaxValue ขึ้นมาโดยมีการรับค่าตัวแปร int หรือเลขจำนวนเต็ม 2 ค่ามาเปรียบเทียบว่าใครมากกว่ากัน โดย เก็บลงในตัวแปร val1 และ val2 หลังจากนั้นส่งค่ากลับไป return เป็น int ผ่านตัวแปร result นั่นเอง ลองเขียนโปรแกรมดูจะเป็นดังนี้:
package main import "fmt" func main() { var num1 int = 87 var num2 int = 54 var answer int answer = MyMaxValue(num1, num2) fmt.Printf( "Maximum value is: %d\n", answer ) } func MyMaxValue(val1, val2 int) int { var result int if (val1 > val2) { result = val1 } else { result = val2 } return result }
เทียบค่า 87 กับ 54 เลขไหนมากกว่ากัน ทดสอบโดยการ Run คำสั่ง:
$ go run tutorial4.go
ผลลัพธ์คือ
การใช้งาน Scope Rules
แบบแรกคือ Local Variables ตัวแปรที่เป็น Local ภายในเราสามารถประกาศและเรียกใช้ดังนี้:
package main import "fmt" func main() { var a, b, c int a = 12 b = 6 c = a + b fmt.Printf ("value of a = %d, b = %d and c = %d\n", a, b, c) }
ตัวแปรคือ a,b,c ที่ประกาศใช้งานภายใต้ฟังก์ชัน main()
ต่อมาเราจะดูการประกาศ Global Variable กันคือการประกาศตัวแปร Global ใช้ได้ทุกฟังก์ชัน ไม่ใช่แค่เฉพาะ main() เพียงฟังก์ชันเดียว:
package main import "fmt" var g,answer int func main() { g = 15 var a, b, c int a = 12 b = 6 c = a + b answer = MyMaxValue(c, g) fmt.Printf ("value of a = %d, b = %d and c = %d\n", a, b, c) fmt.Printf( "value of g = %d\n", g ) fmt.Printf( "Maximum value is: %d\n", answer ) } func MyMaxValue(val1, val2 int) int { var result int if (val1 > val2) { result = val1 } else { result = val2 } return result }
เราประกาศ Global Variable คือ
var g,answer int
แล้วเอาตัวอย่าง การเรียกฟังก์ชันมาใช้งานผลลัพธ์คือ
Array ในภาษา Go
Array คือ ประเภทของข้อมูลที่สามารถเก็บข้อมูลประเภทเดียวกันแบบเป็นลำดับได้ โดยข้อมูลนั้นจะอยู่ในตัวแปรตัวเดียวกันที่เรียกว่า ตัวแปร Array เรียกอีกชื่อหนึ่งว่า ตัวแปรชุด เป็นการจองพื้นที่ในหน่วยความ จำให้กับตัวแปร เพื่อให้ตัวแปรนั้นสามารถรับข้อมูลหรือเก็บข้อมูลได้มากกว่า 1 ค่า โดยค่าแต่ละค่านั้น จะถูกเก็บลงยังพื้นที่ของหน่วยความจำที่แตกต่างกัน พื้นที่ในหน่วยความจำจะใช้หมายเลขลำดับเป็นตัว จำแนกความแตกต่างของค่าตัวแปรแต่ละพื้นที่ด้วยการระบุหมายเลขลำดับที่เรียกว่า ดัชนี (Index) กำกับตามหลังชื่อตัวแปร
โดยใช้หมายเลขลำดับตั้งแต่ 0, 1, 2, … เป็นต้นไป
มาดูการทำงานของ Array กันดีกว่า:
var variable_name [SIZE] variable_type
ในภาษา Go นั้น การประกาศ array จะใช้ Pattern ดังนี้:
- variable_name คือชื่อตัวแปร Array
- [Size] คือขนาดของข้อมูลในตัวแปร Array
- variable_type คือประเภทตัวแปรซึ่งตัวแปรชุดทั้งหมดใน array ต้องเป็นประเภทเดียวกัน
ตัวอย่าง:
var n [10]int
ตัวแปร n เป็น int มีขนาด 10 ชุดข้อมูล การเขียนโปรแกรมในภาษา Go คือ:
package main import "fmt" func main() { var n [10]int var i,j int for i = 0; i < 10; i++ { n[i] = i + 100 } for j = 0; j < 10; j++ { fmt.Printf("n[%d] = %d\n", j, n[j] ) } }
ทดสอบ:
เป็นว่าภาษา Go เรียนรู้ไม่ยากนะครับลองไปฝึกฝนกันดู