พื้นฐานฟังก์ชันและลายเซ็น
พารามิเตอร์ ชนิดค่าที่ส่งคืน และหลักการเรียกใช้
พื้นฐานฟังก์ชันและลายเซ็น เป็นบทเรียน Go Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Go Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Go Academy มีบทเรียนทั้งหมด 4 บทเรียน
การกำหนดฟังก์ชัน
ใน Go ฟังก์ชันกำหนดด้วยคีย์เวิร์ด func:
func greet(name string) string {
return "Hello, " + name
}พารามิเตอร์และอาร์กิวเมนต์
พารามิเตอร์จะระบุประเภทและเขียนเป็นคู่ name type พารามิเตอร์หลายตัวที่มีประเภทเดียวกันสามารถใช้การระบุประเภทเดียวร่วมกันได้:
func add(x, y int) int {
return x + y
}
func rect(w, h float64) float64 {
return w * h
}ฟังก์ชันที่ไม่คืนค่า
ฟังก์ชันที่ไม่คืนค่าจะละเว้นประเภทค่าที่คืนกลับ ฟังก์ชันจะคืนค่ากลับโดยปริยายเมื่อการทำงานมาถึงจุดสิ้นสุด:
func printBanner(title string) {
fmt.Println("=====", title, "======")
}การเรียกใช้ฟังก์ชัน
เรียกฟังก์ชันด้วยชื่อ ตามด้วยวงเล็บและอาร์กิวเมนต์ที่ตรงกัน:
result := add(3, 4) // 7
fmt.Println(greet("Go")) // Hello, Go
printBanner("Welcome")ฟังก์ชันในฐานะค่าชั้นหนึ่ง
ฟังก์ชันเป็นค่าชั้นหนึ่งใน Go — สามารถกำหนดให้ตัวแปรและส่งเป็นอาร์กิวเมนต์ได้:
apply := func(n int, f func(int) int) int {
return f(n)
}
double := func(n int) int { return n * 2 }
fmt.Println(apply(5, double)) // 10ประเภทฟังก์ชัน
คุณสามารถกำหนดประเภทฟังก์ชันที่มีชื่อ เพื่อให้ลายเซ็นกระชับและอ่านง่ายขึ้น:
type Transform func(int) int
func applyAll(n int, fns []Transform) int {
for _, f := range fns {
n = f(n)
}
return n
}ฟังก์ชันเรียกซ้ำ
Go รองรับการเรียกซ้ำ โปรดระวังความลึกของสแตก — สแตกของกอร์รูทีนใน Go จะขยายแบบไดนามิก แต่การเรียกซ้ำไม่สิ้นสุดยังคงทำให้สแตกโอเวอร์โฟลว์:
func factorial(n int) int {
if n <= 1 {
return 1
}
return n * factorial(n-1)
}แนวทางการตั้งชื่อฟังก์ชัน
แนวทางการตั้งชื่อฟังก์ชันใน Go:
- ใช้
MixedCaps(ส่งออก) หรือmixedCaps(ไม่ส่งออก) - ใช้ชื่อสั้นที่สื่อถึงการกระทำ:
New,Get,Parse,Write - หลีกเลี่ยง
GetXสำหรับตัวเข้าถึงค่าที่เรียบง่าย — ใช้Xก็เพียงพอ - เพรดิเคตแบบบูลีน:
IsValid,HasPrefix
ฟังก์ชันเริ่มต้น
ฟังก์ชัน init() เป็นฟังก์ชันพิเศษที่ทำงานโดยอัตโนมัติเมื่อโหลดแพ็กเกจ ก่อน main():
- ไม่รับอาร์กิวเมนต์และไม่คืนค่า
- แพ็กเกจหนึ่งสามารถมีฟังก์ชันเริ่มต้นได้หลายฟังก์ชัน
- ใช้สำหรับการตั้งค่าครั้งเดียว เช่น การลงทะเบียนไดรเวอร์
ฟังก์ชันเทียบกับเมธอด
ฟังก์ชันไม่เกี่ยวข้องกับประเภทใดโดยเฉพาะ ส่วนเมธอดจะมีตัวรับ (ซึ่งจะกล่าวถึงในหัวข้อโครงสร้างและเมธอด) ทั้งสองแบบใช้คีย์เวิร์ด func:
// Function
func max(a, b int) int { ... }
// Method
func (c Counter) Value() int { ... }คำถามทบทวน
ใน Go ฟังก์ชันสามารถคืนค่าหลายค่าได้หรือไม่
สรุป: พื้นฐานฟังก์ชัน
ฟังก์ชันใน Go สื่อความหมายได้ดีและยืดหยุ่น:
func name(params) returnType { }- พารามิเตอร์ที่มีประเภทเดียวกันสามารถใช้การระบุประเภทเดียวร่วมกันได้
- ฟังก์ชันเป็นค่าชั้นหนึ่ง
- กำหนดประเภทฟังก์ชันสำหรับลายเซ็นที่นำกลับมาใช้ใหม่ได้
- รองรับการเรียกซ้ำ และฟังก์ชันเริ่มต้นจะทำงานเมื่อโหลดแพ็กเกจ
ถัดไป: ค่าที่คืนกลับหลายค่าในเชิงลึก
คำถามที่พบบ่อย
บทเรียน “พื้นฐานฟังก์ชันและลายเซ็น” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “พื้นฐานฟังก์ชันและลายเซ็น” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Go Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Go Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “พื้นฐานฟังก์ชันและลายเซ็น”
พารามิเตอร์ ชนิดค่าที่ส่งคืน และหลักการเรียกใช้ คุณปฏิบัติ Go Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Go Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Go Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “พื้นฐานฟังก์ชันและลายเซ็น” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Go Academy นี้ได้ไหม
ได้ บทเรียน Go Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- พื้นฐานฟังก์ชันและลายเซ็น
- ค่าที่ส่งคืนหลายค่า
- ฟังก์ชันแบบรับอาร์กิวเมนต์ไม่จำกัดจำนวน
- defer ฟังก์ชันไม่ระบุชื่อ และคลอสเชอร์