การสแกนข้อมูลนำเข้า
อ่านข้อมูลนำเข้าที่จัดรูปแบบแล้ว
การสแกนข้อมูลนำเข้า เป็นบทเรียน Go Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Go Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Go Academy มีบทเรียนทั้งหมด 4 บทเรียน
การอ่านอินพุตด้วย fmt
แพ็กเกจ fmt สามารถอ่านค่าได้ ไม่ได้มีไว้สำหรับพิมพ์เท่านั้น ฟังก์ชันสแกนจะแยกวิเคราะห์ข้อความเป็นตัวแปรตามประเภท
ฟังก์ชันเหล่านี้ทำงานในทิศทางตรงข้ามกับฟังก์ชันพิมพ์
package main
import "fmt"
func main() {
var n int
fmt.Sscan("42", &n)
fmt.Println(n + 1)
}ต้องใช้พอยน์เตอร์
ฟังก์ชันสแกนต้องเก็บผลลัพธ์ ดังนั้นคุณจึงต้องส่งที่อยู่ของตัวแปรแต่ละตัวโดยใช้ &
การลืม & เป็นข้อผิดพลาดที่พบบ่อยที่สุดในการสแกน
package main
import "fmt"
func main() {
var a, b int
fmt.Sscan("3 4", &a, &b)
fmt.Println(a + b)
}Sscan แยกตามช่องว่าง
fmt.Sscan อ่านค่าที่คั่นด้วยช่องว่างจากสตริงลงในตัวแปรหลายตัว โดยเลือกประเภทจากพอยน์เตอร์แต่ละตัว
package main
import "fmt"
func main() {
var name string
var age int
fmt.Sscan("Ada 36", &name, &age)
fmt.Println(name, age)
}Sscanf ใช้รูปแบบ
fmt.Sscanf แยกวิเคราะห์ตามสตริงรูปแบบ เช่นเดียวกับ Printf แต่ทำงานย้อนกลับ อักขระตามตัวอักษรในรูปแบบต้องตรงกับอินพุต
package main
import "fmt"
func main() {
var h, m int
fmt.Sscanf("09:05", "%d:%d", &h, &m)
fmt.Println(h, m)
}ตรวจสอบจำนวนที่อ่านได้
ฟังก์ชันสแกนส่งคืนจำนวนรายการที่แยกวิเคราะห์สำเร็จและข้อผิดพลาด ให้ตรวจสอบจำนวนเพื่อดูว่าการแยกวิเคราะห์สำเร็จสมบูรณ์หรือไม่
package main
import "fmt"
func main() {
var a, b int
count, _ := fmt.Sscan("7", &a, &b)
fmt.Println("parsed:", count)
}การจัดการข้อผิดพลาดในการแยกวิเคราะห์
หากอินพุตไม่ตรงกับประเภทที่คาดไว้ จะส่งคืนข้อผิดพลาด ให้ตรวจสอบข้อผิดพลาดนี้เสมอเมื่อรับอินพุตจริง
package main
import "fmt"
func main() {
var n int
_, err := fmt.Sscan("notanumber", &n)
if err != nil {
fmt.Println("error:", err)
}
}การแยกวิเคราะห์หลายประเภท
คุณสามารถอ่านค่าหลายประเภทได้ในการเรียกใช้ครั้งเดียว ประเภทของพอยน์เตอร์แต่ละตัวจะกำหนดวิธีแยกวิเคราะห์โทเค็นของตัวเอง
package main
import "fmt"
func main() {
var word string
var price float64
var ok bool
fmt.Sscan("apple 1.50 true", &word, &price, &ok)
fmt.Println(word, price, ok)
}Sscanf กับข้อความตามตัวอักษร
Sscanf เหมาะอย่างยิ่งกับรูปแบบตายตัว เช่น พิกัดหรือคู่คีย์-ค่า ซึ่งมีเครื่องหมายวรรคตอนคั่นตัวเลข
package main
import "fmt"
func main() {
var x, y int
fmt.Sscanf("(3,8)", "(%d,%d)", &x, &y)
fmt.Println(x, y)
}การอ่านเลขทศนิยม
ใช้ %f ใน Sscanf หรือใช้ *float64 ใน Sscan เพื่ออ่านจำนวนทศนิยม
package main
import "fmt"
func main() {
var temp float64
fmt.Sscanf("21.5C", "%fC", &temp)
fmt.Println(temp)
}การสแกนเทียบกับอินพุตมาตรฐาน
fmt.Scan และ fmt.Scanf อ่านจากอินพุตมาตรฐานในลักษณะเดียวกับที่ Sscan อ่านจากสตริง กฎการแยกวิเคราะห์เหมือนกัน ต่างกันเพียงแหล่งข้อมูล
package main
import "fmt"
func main() {
line := "100 200"
var a, b int
fmt.Sscan(line, &a, &b)
fmt.Println(a * b)
}ตัวแยกวิเคราะห์ขนาดเล็ก
ผสานการสแกนเข้ากับการคำนวณเพื่อแยกวิเคราะห์ระเบียนและสร้างผลลัพธ์
package main
import "fmt"
func main() {
var name string
var qty int
var unit float64
fmt.Sscanf("pen 3 1.25", "%s %d %f", &name, &qty, &unit)
fmt.Printf("%s total: $%.2f\n", name, float64(qty)*unit)
}ตรวจสอบอย่างรวดเร็ว
คุณต้องส่งอะไรให้ฟังก์ชันสแกนเพื่อเก็บผลลัพธ์
สรุปทบทวน: การสแกนอินพุต
คุณได้เรียนรู้การอ่านอินพุตตามรูปแบบแล้ว:
Sscanแยกตามช่องว่าง ส่วนSscanfทำตามสตริงรูปแบบ- ส่งพอยน์เตอร์ด้วย
&สำหรับเป้าหมายแต่ละตัว - ตรวจสอบจำนวนและข้อผิดพลาดที่ส่งคืนเพื่อจับอินพุตที่ไม่ถูกต้อง
package main
import "fmt"
func main() {
var d, mo, y int
fmt.Sscanf("30/05/2026", "%d/%d/%d", &d, &mo, &y)
fmt.Println(y, mo, d)
}เรียนรู้ Go ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 51
- บทเรียน
- 203
คำถามที่พบบ่อย
บทเรียน “การสแกนข้อมูลนำเข้า” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การสแกนข้อมูลนำเข้า” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Go Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Go Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การสแกนข้อมูลนำเข้า”
อ่านข้อมูลนำเข้าที่จัดรูปแบบแล้ว คุณปฏิบัติ Go Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Go Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Go Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “การสแกนข้อมูลนำเข้า” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Go Academy นี้ได้ไหม
ได้ บทเรียน Go Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- เวิร์บของ Printf
- Sprintf และ Fprintf
- อินเทอร์เฟซ Stringer
- การสแกนข้อมูลนำเข้า