ไป - ฟังก์ชั่น
ฟังก์ชันคือกลุ่มของคำสั่งที่ทำงานร่วมกัน โปรแกรม Go ทุกโปรแกรมมีฟังก์ชันอย่างน้อยหนึ่งฟังก์ชันซึ่งก็คือmain(). คุณสามารถแบ่งรหัสของคุณออกเป็นฟังก์ชันแยกกันได้ การแบ่งรหัสของคุณระหว่างฟังก์ชันต่างๆนั้นขึ้นอยู่กับคุณ แต่เหตุผลแล้วการแบ่งควรเป็นเช่นนั้นเพื่อให้แต่ละฟังก์ชันทำงานเฉพาะ
ฟังก์ชั่น declarationบอกคอมไพเลอร์เกี่ยวกับชื่อฟังก์ชันชนิดการส่งคืนและพารามิเตอร์ ฟังก์ชั่นdefinition ให้ตัวจริงของฟังก์ชั่น
ไลบรารีมาตรฐาน Go มีฟังก์ชันในตัวมากมายที่โปรแกรมของคุณสามารถเรียกใช้ได้ ตัวอย่างเช่นฟังก์ชันlen()รับอาร์กิวเมนต์ประเภทต่างๆและส่งกลับความยาวของประเภท ถ้าสตริงถูกส่งผ่านไปฟังก์ชันจะส่งกลับความยาวของสตริงเป็นไบต์ ถ้าอาร์เรย์ถูกส่งผ่านไปฟังก์ชันจะส่งกลับความยาวของอาร์เรย์
ฟังก์ชั่นเรียกอีกอย่างว่า method, sub-routine, หรือ procedure.
การกำหนดฟังก์ชัน
รูปแบบทั่วไปของนิยามฟังก์ชันในภาษาโปรแกรม Go มีดังนี้ -
func function_name( [parameter list] ) [return_types]
{
body of the function
}
ฟังก์ชั่นความหมายไปในการเขียนโปรแกรมภาษาประกอบด้วยส่วนหัวของฟังก์ชั่นและการทำงานของร่างกาย นี่คือส่วนทั้งหมดของฟังก์ชัน -
Func - เริ่มการประกาศฟังก์ชัน
Function Name- เป็นชื่อจริงของฟังก์ชัน ชื่อฟังก์ชันและรายการพารามิเตอร์ประกอบกันเป็นลายเซ็นฟังก์ชัน
Parameters- พารามิเตอร์เปรียบเสมือนตัวยึด เมื่อเรียกใช้ฟังก์ชันคุณจะส่งค่าไปยังพารามิเตอร์ ค่านี้เรียกว่าพารามิเตอร์หรืออาร์กิวเมนต์จริง รายการพารามิเตอร์หมายถึงประเภทลำดับและจำนวนพารามิเตอร์ของฟังก์ชัน พารามิเตอร์เป็นทางเลือก นั่นคือฟังก์ชันอาจไม่มีพารามิเตอร์
Return Type- ฟังก์ชันอาจส่งคืนรายการค่า return_types คือรายการชนิดข้อมูลของค่าที่ฟังก์ชันส่งกลับ บางฟังก์ชันดำเนินการตามที่ต้องการโดยไม่ส่งคืนค่า ในกรณีนี้ return_type เป็นสิ่งที่ไม่จำเป็น
Function Body - ประกอบด้วยชุดคำสั่งที่กำหนดสิ่งที่ฟังก์ชันทำ
ตัวอย่าง
ซอร์สโค้ดต่อไปนี้แสดงฟังก์ชันที่เรียกว่า max(). ฟังก์ชันนี้รับสองพารามิเตอร์ num1 และ num2 และส่งกลับค่าสูงสุดระหว่างสอง -
/* function returning the max between two numbers */
func max(num1, num2 int) int {
/* local variable declaration */
result int
if (num1 > num2) {
result = num1
} else {
result = num2
}
return result
}
เรียกใช้ฟังก์ชัน
ในขณะที่สร้างฟังก์ชัน Go คุณให้คำจำกัดความว่าฟังก์ชันนี้มีไว้ทำอะไร ในการใช้ฟังก์ชันคุณจะต้องเรียกใช้ฟังก์ชันนั้นเพื่อทำงานที่กำหนดไว้
เมื่อโปรแกรมเรียกใช้ฟังก์ชันตัวควบคุมโปรแกรมจะถูกโอนไปยังฟังก์ชันที่เรียก ฟังก์ชันที่เรียกว่าทำงานตามที่กำหนดไว้และเมื่อคำสั่ง return ถูกเรียกใช้งานหรือเมื่อถึงวงเล็บปีกกาปิดฟังก์ชันสิ้นสุดฟังก์ชันจะส่งคืนการควบคุมโปรแกรมกลับไปที่โปรแกรมหลัก
ในการเรียกใช้ฟังก์ชันคุณเพียงแค่ส่งพารามิเตอร์ที่ต้องการพร้อมกับชื่อฟังก์ชัน หากฟังก์ชันส่งคืนค่าคุณสามารถจัดเก็บค่าที่ส่งคืนได้ ตัวอย่างเช่น -
package main
import "fmt"
func main() {
/* local variable definition */
var a int = 100
var b int = 200
var ret int
/* calling a function to get max value */
ret = max(a, b)
fmt.Printf( "Max value is : %d\n", ret )
}
/* function returning the max between two numbers */
func max(num1, num2 int) int {
/* local variable declaration */
var result int
if (num1 > num2) {
result = num1
} else {
result = num2
}
return result
}
เราได้เก็บฟังก์ชัน max () ไว้พร้อมกับฟังก์ชัน main () และรวบรวมซอร์สโค้ด ในขณะที่รันไฟล์ปฏิบัติการขั้นสุดท้ายจะให้ผลลัพธ์ดังนี้ -
Max value is : 200
การคืนค่าหลายค่าจากฟังก์ชัน
ฟังก์ชัน Go สามารถคืนค่าได้หลายค่า ตัวอย่างเช่น -
package main
import "fmt"
func swap(x, y string) (string, string) {
return y, x
}
func main() {
a, b := swap("Mahesh", "Kumar")
fmt.Println(a, b)
}
เมื่อโค้ดด้านบนถูกคอมไพล์และเรียกใช้งานจะให้ผลลัพธ์ดังนี้ -
Kumar Mahesh
อาร์กิวเมนต์ของฟังก์ชัน
ถ้าฟังก์ชันจะใช้อาร์กิวเมนต์ฟังก์ชันจะต้องประกาศตัวแปรที่ยอมรับค่าของอาร์กิวเมนต์ ตัวแปรเหล่านี้เรียกว่าformal parameters ของฟังก์ชัน
พารามิเตอร์ที่เป็นทางการจะทำงานเหมือนกับตัวแปรท้องถิ่นอื่น ๆ ภายในฟังก์ชันและถูกสร้างขึ้นเมื่อเข้าสู่ฟังก์ชันและถูกทำลายเมื่อออก
ในขณะที่เรียกใช้ฟังก์ชันมีสองวิธีที่สามารถส่งผ่านอาร์กิวเมนต์ไปยังฟังก์ชัน -
ซีเนียร์ No | ประเภทการโทรและคำอธิบาย |
---|---|
1 | โทรตามค่า วิธีนี้คัดลอกค่าที่แท้จริงของอาร์กิวเมนต์ลงในพารามิเตอร์ที่เป็นทางการของฟังก์ชัน ในกรณีนี้การเปลี่ยนแปลงที่เกิดขึ้นกับพารามิเตอร์ภายในฟังก์ชันจะไม่มีผลกับอาร์กิวเมนต์ |
2 | โทรตามข้อมูลอ้างอิง วิธีนี้คัดลอกที่อยู่ของอาร์กิวเมนต์ลงในพารามิเตอร์ที่เป็นทางการ ภายในฟังก์ชันจะใช้แอดเดรสเพื่อเข้าถึงอาร์กิวเมนต์จริงที่ใช้ในการโทร ซึ่งหมายความว่าการเปลี่ยนแปลงที่เกิดขึ้นกับพารามิเตอร์มีผลต่ออาร์กิวเมนต์ |
ตามค่าเริ่มต้น Go ใช้การโทรตามค่าเพื่อส่งผ่านอาร์กิวเมนต์ โดยทั่วไปหมายความว่าโค้ดภายในฟังก์ชันไม่สามารถเปลี่ยนแปลงอาร์กิวเมนต์ที่ใช้เรียกฟังก์ชันได้ โปรแกรมข้างต้นในขณะที่เรียกใช้ฟังก์ชัน max () ใช้วิธีการเดียวกัน
การใช้งานฟังก์ชัน
สามารถใช้ฟังก์ชันได้หลายวิธีดังต่อไปนี้:
ซีเนียร์ No | การใช้งานฟังก์ชั่นและคำอธิบาย |
---|---|
1 | ฟังก์ชั่นเป็นค่า สามารถสร้างฟังก์ชันได้ทันทีและใช้เป็นค่าต่างๆได้ |
2 | การปิดฟังก์ชัน การปิดฟังก์ชันเป็นฟังก์ชันที่ไม่ระบุชื่อและสามารถใช้ในการเขียนโปรแกรมแบบไดนามิกได้ |
3 | วิธี วิธีการเป็นฟังก์ชั่นพิเศษกับเครื่องรับ |