Sprintf และ Fprintf
จัดรูปแบบเป็นสตริงและตัวเขียน
Sprintf และ Fprintf เป็นบทเรียน Go Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Go Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Go Academy มีบทเรียนทั้งหมด 4 บทเรียน
ตระกูล Printf
แพ็กเกจ fmt มีฟังก์ชันจัดรูปแบบที่เกี่ยวข้องกันสามแบบ:
Printfเขียนไปยังเอาต์พุตมาตรฐานSprintfส่งคืนสตริงที่จัดรูปแบบแล้วFprintfเขียนไปยังตัวเขียนข้อมูลใดก็ได้
package main
import "fmt"
func main() {
fmt.Printf("hello %s\n", "world")
}Sprintf ส่งคืนสตริง
fmt.Sprintf จัดรูปแบบเหมือน Printf ทุกประการ แต่แทนที่จะพิมพ์ผลลัพธ์ ฟังก์ชันจะส่งคืนผลลัพธ์เป็นสตริงที่คุณเก็บไว้หรือนำกลับมาใช้ได้
package main
import "fmt"
func main() {
msg := fmt.Sprintf("%s scored %d", "Bob", 95)
fmt.Println(msg)
}การสร้างตัวระบุ
Sprintf มีประโยชน์สำหรับประกอบคีย์ ชื่อไฟล์ หรือป้ายกำกับจากส่วนต่าง ๆ
package main
import "fmt"
func main() {
id := fmt.Sprintf("user-%04d", 42)
fmt.Println(id)
}การจัดรูปแบบตัวเลขเป็นข้อความ
ใช้ Sprintf เพื่อเปลี่ยนตัวเลขเป็นสตริงที่จัดรูปแบบไว้อย่างเหมาะสม เช่น สกุลเงิน
package main
import "fmt"
func main() {
label := fmt.Sprintf("Price: $%.2f", 7.5)
fmt.Println(label)
}Fprintf เขียนไปยังตัวเขียนข้อมูล
fmt.Fprintf รับ io.Writer เป็นอาร์กิวเมนต์แรก และจัดรูปแบบข้อมูลลงในตัวเขียนนั้น os.Stdout ก็เป็นตัวเขียนข้อมูลประเภทหนึ่ง
package main
import (
"fmt"
"os"
)
func main() {
fmt.Fprintf(os.Stdout, "to stdout: %d\n", 1)
}การเขียนไปยังข้อผิดพลาดมาตรฐาน
ส่งข้อมูลวินิจฉัยไปยัง os.Stderr ด้วย Fprintf เพื่อให้ข้อมูลเหล่านั้นแยกจากเอาต์พุตปกติ
package main
import (
"fmt"
"os"
)
func main() {
fmt.Fprintf(os.Stderr, "warning: %s\n", "low disk")
}Fprintf ลงในตัวสร้าง
เนื่องจาก strings.Builder เป็น io.Writer เช่นกัน คุณจึงจัดรูปแบบข้อมูลลงในตัวสร้างได้โดยตรง แล้วอ่านสตริงเมื่อเสร็จสิ้น
package main
import (
"fmt"
"strings"
)
func main() {
var b strings.Builder
fmt.Fprintf(&b, "%s=%d;", "x", 10)
fmt.Fprintf(&b, "%s=%d", "y", 20)
fmt.Println(b.String())
}Fprintf ลงใน bytes.Buffer
bytes.Buffer เป็นเป้าหมายของตัวเขียนข้อมูลที่ใช้กันทั่วไปอีกชนิดหนึ่ง คุณสามารถสะสมเนื้อหาแล้วแปลงเป็นสตริงได้
package main
import (
"bytes"
"fmt"
)
func main() {
var buf bytes.Buffer
fmt.Fprintf(&buf, "row %d\n", 1)
fmt.Fprintf(&buf, "row %d\n", 2)
fmt.Print(buf.String())
}Sprint และ Fprint โดยไม่มี f
รูปแบบที่มี f รับสตริงรูปแบบ หากตัด f ออกสำหรับ Sprint/Fprint ฟังก์ชันเหล่านี้จะเพียงนำอาร์กิวเมนต์มาต่อกันโดยใช้การจัดรูปแบบเริ่มต้น
package main
import "fmt"
func main() {
s := fmt.Sprint("a", 1, true)
fmt.Println(s)
}Sprintln เพิ่มช่องว่าง
fmt.Sprintln เชื่อมอาร์กิวเมนต์ด้วยช่องว่าง เติมการขึ้นบรรทัดใหม่ และส่งคืนสตริง
package main
import "fmt"
func main() {
s := fmt.Sprintln("x", 1, "y", 2)
fmt.Print(s)
}การเลือกเครื่องมือที่เหมาะสม
เลือกตามปลายทาง:
- ต้องการสตริงใช่หรือไม่ ใช้
Sprintf - กำลังเขียนไปยังเอาต์พุตมาตรฐานใช่หรือไม่ ใช้
Printf - กำลังเขียนไปยังไฟล์ บัฟเฟอร์ หรือสตรีมข้อผิดพลาดใช่หรือไม่ ใช้
Fprintf
package main
import (
"fmt"
"os"
)
func main() {
s := fmt.Sprintf("count=%d", 3)
fmt.Fprintf(os.Stdout, "%s\n", s)
}ตรวจสอบอย่างรวดเร็ว
ฟังก์ชันใดส่งคืนข้อความที่จัดรูปแบบแล้วแทนการพิมพ์
สรุปทบทวน: Sprintf และ Fprintf
คุณได้เรียนรู้ตระกูลฟังก์ชันจัดรูปแบบแล้ว:
Sprintfส่งคืนสตริงFprintfเขียนไปยังio.Writerใดก็ได้ (เอาต์พุตมาตรฐาน ข้อผิดพลาดมาตรฐาน บัฟเฟอร์ และตัวสร้าง)- รูปแบบที่ไม่มี
fใช้การจัดรูปแบบเริ่มต้น
package main
import (
"fmt"
"strings"
)
func main() {
var b strings.Builder
fmt.Fprintf(&b, "result=%s", fmt.Sprintf("%d%%", 80))
fmt.Println(b.String())
}คำถามที่พบบ่อย
บทเรียน “Sprintf และ Fprintf” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “Sprintf และ Fprintf” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Go Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Go Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “Sprintf และ Fprintf”
จัดรูปแบบเป็นสตริงและตัวเขียน คุณปฏิบัติ Go Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Go Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Go Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “Sprintf และ Fprintf” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Go Academy นี้ได้ไหม
ได้ บทเรียน Go Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- เวิร์บของ Printf
- Sprintf และ Fprintf
- อินเทอร์เฟซ Stringer
- การสแกนข้อมูลนำเข้า