Go Academy · บทเรียน

การประกาศตัวแปรใน Go

var, := และการอนุมานชนิดข้อมูล

บทเรียน 1 จาก 413 ขั้นตอน

การประกาศตัวแปรใน Go เป็นบทเรียน Go Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Go Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Go Academy มีบทเรียนทั้งหมด 4 บทเรียน

ตัวแปรคืออะไร

ตัวแปรคือตำแหน่งจัดเก็บค่าที่มีชื่อ ใน Go ตัวแปรทุกตัวมีชนิดที่กำหนดตายตัวตั้งแต่ขณะคอมไพล์

  • Go เป็นภาษาที่กำหนดชนิดแบบสแตติก — ชนิดจะเปลี่ยนแปลงขณะทำงานไม่ได้
  • ตัวแปรจะมีค่าศูนย์เป็นค่าเริ่มต้นเสมอเมื่อไม่ได้กำหนดค่าไว้อย่างชัดเจน
  • การตั้งชื่อที่ชัดเจนมีความสำคัญ: Go นิยมใช้ชื่อสั้นและชัดเจนมากกว่าชื่อยาว

การประกาศ var

คีย์เวิร์ด var ใช้ประกาศตัวแปรอย่างชัดเจนหนึ่งตัวหรือหลายตัว:

package main

func main() {
    var name string
    var age  int
    var pi   float64 = 3.14
    _ = name
    _ = age
    _ = pi
}

การประกาศตัวแปรแบบย่อ :=

ภายในฟังก์ชัน คุณสามารถใช้ := เพื่อประกาศและกำหนดค่าแบบกระชับในขั้นตอนเดียว

  • ชนิดจะถูกอนุมานจากด้านขวาของการกำหนดค่า
  • := ใช้ได้เฉพาะภายในเนื้อฟังก์ชันเท่านั้น
  • ตัวแปรทางด้านซ้ายอย่างน้อยหนึ่งตัวต้องเป็นตัวแปรใหม่
package main

func main() {
    city := "Ankara"   // string inferred
    count := 42         // int inferred
    temp := 36.6        // float64 inferred
    _ = city
    _ = count
    _ = temp
}

ค่าศูนย์

Go จะกำหนดค่าศูนย์ให้ตัวแปรที่ประกาศทุกตัวโดยอัตโนมัติ:

  • int, float64 → 0
  • string → "" (สตริงว่าง)
  • bool → false
  • พอยน์เตอร์ สไลซ์ แมป และแชนเนล → nil

ค่าศูนย์ช่วยกำจัดข้อผิดพลาดจากตัวแปรที่ยังไม่ได้กำหนดค่าซึ่งมักพบใน C/C++

การประกาศตัวแปรหลายตัว

ประกาศและกำหนดค่าให้ตัวแปรหลายตัวพร้อมกันได้โดยใช้รูปแบบบล็อกหรือทูเพิล:

package main

var (
    host = "localhost"
    port = 8080
    debug = false
)

func main() {
    x, y := 10, 20
    _ = x
    _ = y
}

กฎการอนุมานชนิด

เมื่อใช้ := Go จะอนุมานชนิดจากลิเทอรัล:

  • ลิเทอรัลจำนวนเต็ม → int
  • ลิเทอรัลจำนวนทศนิยม → float64
  • ลิเทอรัลสตริง → string
  • ลิเทอรัลจำนวนเชิงซ้อน → complex128

หากต้องการชนิดเฉพาะ (เช่น int32) ให้ใช้การประกาศ var อย่างชัดเจนหรือใช้การแปลงชนิด

ตัวแปรระดับแพ็กเกจเทียบกับระดับฟังก์ชัน

ตัวแปรสามารถอยู่ในระดับแพ็กเกจ (ใช้ร่วมกันทั่วทั้งแพ็กเกจ) หรือระดับฟังก์ชัน (ใช้เฉพาะในฟังก์ชัน) ได้:

  • ระดับแพ็กเกจ: ใช้ var — เข้าถึงได้จากทุกแห่งในแพ็กเกจ
  • ระดับฟังก์ชัน: ใช้ := หรือ var — มองเห็นได้เฉพาะภายในฟังก์ชัน
  • ควรเลือกใช้ตัวแปรระดับฟังก์ชันเพื่อจำกัดขอบเขตของสถานะ

ตัวระบุว่าง _

ตัวระบุว่าง _ ใช้ทิ้งค่าที่คุณไม่ต้องการ Go กำหนดให้ต้องใช้ตัวแปรที่ประกาศทุกตัว — _ คือช่องทางยกเว้น:

package main

func divide(a, b int) (int, int) {
    return a / b, a % b
}

func main() {
    quotient, _ := divide(10, 3) // discard remainder
    _ = quotient
}

การบดบังตัวแปร

การบดบังเกิดขึ้นเมื่อขอบเขตด้านในประกาศตัวแปรที่มีชื่อเดียวกับขอบเขตด้านนอก:

  • ตัวแปรด้านในจะบดบังตัวแปรด้านนอกภายในขอบเขตของตน
  • สิ่งนี้อาจทำให้เกิดข้อผิดพลาดที่สังเกตได้ยาก — ควรใช้อย่างตั้งใจ
  • ใช้ go vet และเครื่องมือตรวจโค้ดอย่าง staticcheck เพื่อตรวจหาการบดบังโดยไม่ตั้งใจ

ข้อผิดพลาดที่พบบ่อยเกี่ยวกับ :=

ระวังข้อผิดพลาดเหล่านี้เกี่ยวกับ :=:

  • ใช้ := ในระดับแพ็กเกจ → เกิดข้อผิดพลาดขณะคอมไพล์
  • ตัวแปรทั้งหมดทางด้านซ้ายมีอยู่แล้ว → ให้ใช้ = แทน
  • บดบังตัวแปรข้อผิดพลาดด้านนอกโดยไม่ตั้งใจในบล็อก if-err

หากไม่แน่ใจ ให้ใช้ var อย่างชัดเจนเพื่อให้อ่านเข้าใจง่าย

ตรวจสอบความเข้าใจอย่างรวดเร็ว

ข้อใดต่อไปนี้เป็นไวยากรณ์การประกาศตัวแปรแบบย่อที่ถูกต้องใน Go

ทบทวน: การประกาศตัวแปร

ตอนนี้คุณทราบวิธีประกาศตัวแปรใน Go แล้ว:

  • var name type — การประกาศอย่างชัดเจนพร้อมค่าศูนย์
  • var name = value — var พร้อมการอนุมานชนิด
  • name := value — การประกาศแบบย่อภายในฟังก์ชัน
  • ค่าศูนย์จะถูกกำหนดโดยอัตโนมัติ — ไม่มีสถานะที่ยังไม่ได้กำหนดค่า
  • _ ใช้ทิ้งค่าที่ไม่ต้องการ

ถัดไป: ชนิดในตัวของ Go และค่าศูนย์ของแต่ละชนิดโดยละเอียด

โจทย์ฝึกปฏิบัติ

ลองทำด้วยตัวเอง: ประกาศตัวแปรระดับแพ็กเกจชื่อ appName ชนิด string และตัวแปรระดับฟังก์ชันสำหรับการลองซ้ำโดยใช้ := และกำหนดค่าเป็น 3

โปรดจำไว้ว่า ตัวแปรระดับแพ็กเกจใช้ var และ := ใช้ได้เฉพาะภายในเนื้อฟังก์ชันเท่านั้น

เริ่มต้นได้ฟรี

เรียนรู้ Go ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
51
บทเรียน
203

คำถามที่พบบ่อย

บทเรียน “การประกาศตัวแปรใน Go” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การประกาศตัวแปรใน Go” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Go Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Go Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การประกาศตัวแปรใน Go”

var, := และการอนุมานชนิดข้อมูล คุณปฏิบัติ Go Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Go Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Go Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “การประกาศตัวแปรใน Go” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Go Academy นี้ได้ไหม

ได้ บทเรียน Go Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

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

  1. การประกาศตัวแปรใน Go
  2. ชนิดข้อมูลในตัวของ Go
  3. ค่าคงที่และ iota
  4. การแปลงชนิดข้อมูลใน Go
← กลับไปที่ Go Academy