ฟังก์ชันอรรถประโยชน์ io
คัดลอก TeeReader และ MultiWriter
ฟังก์ชันอรรถประโยชน์ io เป็นบทเรียน Go Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Go Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Go Academy มีบทเรียนทั้งหมด 4 บทเรียน
ชุดเครื่องมือ io
แพ็กเกจ io มีตัวช่วยขนาดเล็กแต่ทรงพลังสำหรับนำตัวอ่านและตัวเขียนมาประกอบกัน เช่น Copy, TeeReader, MultiWriter และอื่น ๆ
io.Copy
io.Copy(dst, src) สตรีมไบต์ทั้งหมดจากตัวอ่านไปยังตัวเขียน และส่งกลับจำนวนไบต์
package main
import (
"fmt"
"io"
"os"
"strings"
)
func main() {
n, _ := io.Copy(os.Stdout, strings.NewReader("copied\n"))
fmt.Println("bytes:", n)
}io.CopyN
io.CopyN(dst, src, n) คัดลอกไบต์จำนวน n ไบต์พอดี ซึ่งมีประโยชน์สำหรับการอ่านส่วนต้นที่มีความยาวแน่นอน
package main
import (
"io"
"os"
"strings"
)
func main() {
io.CopyN(os.Stdout, strings.NewReader("abcdef"), 3)
os.Stdout.WriteString("\n")
}io.MultiWriter
io.MultiWriter กระจายการเขียนหนึ่งครั้งไปยังตัวเขียนหลายตัวพร้อมกัน คล้ายคำสั่ง tee ของ Unix
package main
import (
"bytes"
"fmt"
"io"
"os"
)
func main() {
var buf bytes.Buffer
w := io.MultiWriter(os.Stdout, &buf)
io.WriteString(w, "to both\n")
fmt.Println("buffer copy:", buf.String())
}io.TeeReader
io.TeeReader(r, w) ส่งกลับตัวอ่านที่คัดลอกทุกสิ่งที่อ่านไปยัง w เหมาะอย่างยิ่งสำหรับการบันทึกหรือการทำแฮชข้อมูลขณะที่ข้อมูลไหลผ่าน
package main
import (
"bytes"
"fmt"
"io"
"strings"
)
func main() {
var spy bytes.Buffer
tee := io.TeeReader(strings.NewReader("stream"), &spy)
io.ReadAll(tee)
fmt.Println("observed:", spy.String())
}io.MultiReader
io.MultiReader นำตัวอ่านหลายตัวมาต่อกันเป็นสตรีมต่อเนื่องหนึ่งชุด
package main
import (
"fmt"
"io"
"strings"
)
func main() {
r := io.MultiReader(strings.NewReader("Hello, "), strings.NewReader("World"))
data, _ := io.ReadAll(r)
fmt.Println(string(data))
}io.Discard
io.Discard คือตัวเขียนที่ทิ้งทุกอย่างไป เหมาะสำหรับอ่านข้อมูลที่เหลือจากตัวอ่านจนหมดเมื่อไม่ต้องการข้อมูลนั้น
package main
import (
"fmt"
"io"
"strings"
)
func main() {
n, _ := io.Copy(io.Discard, strings.NewReader("ignored"))
fmt.Println("discarded:", n, "bytes")
}การทำแฮชด้วย TeeReader
รูปแบบการใช้งานแบบคลาสสิกคือ อ่านสตรีมเพื่อจุดประสงค์หลัก ขณะเดียวกัน TeeReader ก็ส่งไบต์ชุดเดียวกันเข้าแฮช ทำให้คำนวณค่าตรวจสอบได้ในการอ่านเพียงรอบเดียว
io.Pipe
io.Pipe เชื่อมตัวเขียนกับตัวอ่านในหน่วยความจำ ซึ่งมักใช้ข้ามโกโรทีนสำหรับรูปแบบการทำงานของผู้ผลิตและผู้บริโภคแบบสตรีม
เลือกตัวช่วยให้เหมาะสม
- ย้ายข้อมูล:
Copy/CopyN - ทำเอาต์พุตซ้ำ:
MultiWriter - สังเกตอินพุต:
TeeReader - รวมอินพุต:
MultiReader - อ่านอินพุตจนหมด:
Discard
การประกอบเข้าด้วยกัน
ตัวช่วยเหล่านี้ล้วนใช้ io.Reader/io.Writer จึงสามารถซ้อนและเชื่อมต่อกันได้อย่างอิสระ เพื่อสร้างไปป์ไลน์ที่ซับซ้อนจากส่วนประกอบขนาดเล็ก
ตรวจสอบอย่างรวดเร็ว
ทดสอบความรู้เกี่ยวกับตัวช่วยของ io
สรุป
คุณได้เรียนรู้ตัวช่วยด้านยูทิลิตีของ io แล้ว
Copy/CopyNใช้สตรีมข้อมูลMultiWriterทำเอาต์พุตซ้ำTeeReaderสังเกตอินพุตMultiReaderรวมอินพุต และDiscardอ่านอินพุตจนหมด- ทั้งหมดสามารถประกอบกันผ่านอินเทอร์เฟซ Reader/Writer
เรียนรู้ Go ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 51
- บทเรียน
- 203
คำถามที่พบบ่อย
บทเรียน “ฟังก์ชันอรรถประโยชน์ io” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ฟังก์ชันอรรถประโยชน์ io” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Go Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Go Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ฟังก์ชันอรรถประโยชน์ io”
คัดลอก TeeReader และ MultiWriter คุณปฏิบัติ Go Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Go Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Go Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “ฟังก์ชันอรรถประโยชน์ io” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Go Academy นี้ได้ไหม
ได้ บทเรียน Go Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- อินเทอร์เฟซ Reader
- อินเทอร์เฟซ Writer
- ฟังก์ชันอรรถประโยชน์ io
- การใช้งานตัวอ่านแบบกำหนดเอง