0Pricing
Go Academy · บทเรียน

พื้นฐานฟังก์ชันและลายเซ็น

พารามิเตอร์ ชนิดค่าที่ส่งคืน และหลักการเรียกใช้

พื้นฐานฟังก์ชันและลายเซ็น เป็นบทเรียน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. พื้นฐานฟังก์ชันและลายเซ็น
  2. ค่าที่ส่งคืนหลายค่า
  3. ฟังก์ชันแบบรับอาร์กิวเมนต์ไม่จำกัดจำนวน
  4. defer ฟังก์ชันไม่ระบุชื่อ และคลอสเชอร์
← กลับไปที่ Go Academy