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

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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

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

  1. เวิร์บของ Printf
  2. Sprintf และ Fprintf
  3. อินเทอร์เฟซ Stringer
  4. การสแกนข้อมูลนำเข้า
← กลับไปที่ Go Academy