วิธีจัดรูปแบบสตริงใน Go

วิธีจัดรูปแบบสตริงใน Go

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





การจัดรูปแบบสตริงใน Go ใช้กระบวนการและไวยากรณ์ที่คุ้นเคยของฟังก์ชัน printf ซึ่งภาษาจาก Java ถึง Haskell ก็ใช้เช่นกัน





Go มีวิธีการต่างๆ สำหรับการจัดรูปแบบสตริงในไฟล์ fmt บรรจุุภัณฑ์. คุณสามารถใช้ฟังก์ชันและกริยาสำหรับการจัดรูปแบบสตริงได้ ขึ้นอยู่กับการดำเนินการหรืออินพุตที่คุณต้องการจัดรูปแบบ





การจัดรูปแบบสตริงใน Go

ฟังก์ชั่นในแพ็คเกจ fmt นั้นคล้ายกับคู่กันเช่น ฟังก์ชัน printf ใน bash หรือ C. Go มาจากกริยาการจัดรูปแบบจาก C.

คุณใช้ กริยารูปแบบสตริง เป็นตัวยึดตำแหน่งสำหรับค่าตัวแปรของคุณในสตริงที่มี จากนั้นคุณสามารถส่งสตริงการจัดรูปแบบนั้นไปยังฟังก์ชันเช่น Printf พร้อมด้วยค่าที่สอดคล้องกับตัวยึดตำแหน่งเหล่านั้น



คุณไม่สามารถใช้กริยาการจัดรูปแบบสตริงกับ พิมพ์ และ Println วิธีการ คุณสามารถใช้พวกเขาด้วยวิธีการเช่น Printf และ Sprintf .

fmt.Println("This is a test %v", 90) 
fmt.Printf("This is a test %v", 90)

ดิ %ใน กริยาพิมพ์ค่าใด ๆ ในรูปแบบเริ่มต้น ดิ Println เมธอดไม่รู้จักคำกริยาและพิมพ์อาร์กิวเมนต์ที่ได้รับ ดิ Printf และ Sprintf ทำหน้าที่จัดรูปแบบอาร์กิวเมนต์สตริงแรกที่คุณส่งผ่านไปยังอาร์กิวเมนต์





  ผลลัพธ์ของการจัดรูปแบบจำนวนเต็ม

ฟังก์ชันการจัดรูปแบบสตริงใน fmt Package

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

ดิ Printf วิธีจัดรูปแบบอินพุตตามตัวระบุรูปแบบและส่งคืนจำนวนไบต์ที่เขียนหรือข้อผิดพลาด





เปลี่ยนแบต macbook air เท่าไหร่ครับ
fmt.Printf("This is a test %v", 90) 

ตามอัตภาพ คุณจะไม่ต้องกังวลกับข้อผิดพลาดเมื่อคุณใช้ Printf กระบวนการ.

ดิ Sprintf รูปแบบเมธอดตามรูปแบบที่ระบุและส่งกลับผลลัพธ์เป็นสตริง

var result = fmt.Sprintf("This is a test %v", 90) 

ดิ Fprintf เมธอดจัดรูปแบบสตริงและเขียนไปยังตัวเขียน (เมธอดที่ใช้ io.นักเขียน อินเตอร์เฟซ)

// write data to standard output 
result, err = fmt.Fprintf(writer, "This is a test %v", 90)

ดิ Fscanf วิธีการสแกนจากเครื่องอ่านและรูปแบบตามรูปแบบที่ระบุ

var take string 

// read data from the given string
readString := strings.NewReader("This is a test")

read, err := fmt.Fscanf(reader, "%v", &take)

ในกรณีนี้ Fscanf ถอดรหัสสตริงจากเครื่องอ่านเป็น เอา ตัวแปร และ อ่าน ตัวแปรเก็บผลลัพธ์ของรูปแบบ

กริยาการจัดรูปแบบสตริง

Go มีกริยาการจัดรูปแบบมากมายที่คุณสามารถใช้ร่วมกับฟังก์ชันการจัดรูปแบบสตริงได้

มีกริยาการจัดรูปแบบสตริงทั่วไปเช่น %ใน กริยาในตัวอย่างฟังก์ชันการจัดรูปแบบสตริง คุณสามารถใช้กริยาการจัดรูปแบบสตริงทั่วไปเพื่อจัดรูปแบบข้อมูลชนิดใดก็ได้

คุณสามารถใช้ %#ใน กริยาเพื่อส่งออกค่าใด ๆ the %+v สำหรับโครงสร้าง %T กริยาสำหรับประเภทของค่าใด ๆ และ %% กริยาที่ไม่มีค่า

อัพเดท play store ยังไงครับ
type any struct {  
name string
age int
isLoggedIn bool
}

var instance = any {
name: "John Doe",
age: 34,
isLoggedIn: true,
}

var result = fmt.Sprintf("This is a struct formatting example %+v", instance)
fmt.Println(result)

ดิ ผลลัพธ์ ตัวแปรเก็บสตริงที่จัดรูปแบบของโครงสร้างอินสแตนซ์ หากคุณพิมพ์ออกมา ควรมีลักษณะดังนี้:

This is a struct formatting example {name:John Doe age:34 isLoggedIn:true}

มีกริยาสำหรับการจัดรูปแบบข้อมูลเฉพาะของ Go รวมถึงช่องสัญญาณและพอยน์เตอร์

%t บูลีน
%d int, int8 เป็นต้น
%d, %#x ถ้าพิมพ์ด้วย %#v uint, uint8 เป็นต้น
%g float32, complex64 เป็นต้น
%s สตริง
%p ชาน.
%P ตัวชี้

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

การจัดรูปแบบจำนวนเต็มและทศนิยม

มีกริยารูปแบบสตริงสำหรับการจัดรูปแบบจำนวนเต็มใน ฐานที่แตกต่างกัน . คุณสามารถใช้คำกริยาเหล่านี้เพื่อจัดรูปแบบจำนวนเต็ม

%b ฐาน2
%ค อักขระที่แสดงโดยจุดโค้ด Unicode ที่สอดคล้องกัน
%d ฐาน 10.
%O ฐาน 8
%O ฐาน 8 ที่มี 0o นำหน้า
%q อักขระที่ยกมาเพียงตัวเดียวใช้ Escape ได้อย่างปลอดภัยด้วยไวยากรณ์ Go
%x ฐาน 16 โดยมีอักษรตัวพิมพ์เล็กสำหรับ a-f
%X ฐาน 16 พร้อมตัวพิมพ์ใหญ่สำหรับ A-F
%ใน รูปแบบยูนิโค้ด: U+1234; เช่นเดียวกับ 'U+%04X'

ตัวอย่างเช่น คุณสามารถจัดรูปแบบจำนวนเต็มโดยใช้เครื่องหมาย %d กริยา:

var result = fmt.Sprintf("This is an integer formatting example %d", 90) 
fmt.Println(result)

เหล่านี้เป็นกริยาสำหรับการจัดรูปแบบตัวเลขทศนิยม

%b สัญกรณ์วิทยาศาสตร์แบบไม่มีทศนิยมที่มีเลขยกกำลังสอง ในลักษณะของ strconv FormatFloat ด้วยรูปแบบ 'b' เช่น -123456p-78
%และ สัญกรณ์วิทยาศาสตร์ เช่น -1.234456e+78
%และ จุดทศนิยมแต่ไม่มีเลขชี้กำลัง เช่น 123.456
%f จุดทศนิยมแต่ไม่มีเลขชี้กำลัง เช่น 123.456
%F คำพ้องความหมายสำหรับ %f
%g %e สำหรับเลขชี้กำลังขนาดใหญ่ มิฉะนั้น %f ความแม่นยำด้านล่าง
%G %E สำหรับเลขชี้กำลังขนาดใหญ่ %F ไม่เช่นนั้น
%x เลขฐานสิบหก (ด้วยเลขยกกำลังสองเลขชี้กำลัง) เช่น -0x1.23abcp+20
%X เลขฐานสิบหกตัวพิมพ์ใหญ่ เช่น -0X1.23ABCP+20.

ต่อไปนี้คือตัวอย่างการจัดรูปแบบจุดทศนิยมโดยไม่มีเลขชี้กำลังด้วย %f กริยา.

เขียนจดหมายถึงทหาร
var result = fmt.Sprintf("This is a floating point formatting example %f", 432.9503) 
fmt.Println(result)

คุณสามารถใช้กริยาทั่วไปได้เสมอหากคุณไม่แน่ใจเกี่ยวกับประเภท

การจัดรูปแบบสตริงและไบต์

สตริงและสไลซ์ของประเภทไบต์ค่อนข้างคล้ายกันใน Go นี่คือแฟล็กสำหรับการจัดรูปแบบสตริงและไบต์

%s ไบต์ที่ไม่ได้ตีความของสตริงหรือสไลซ์
%q สตริงที่มีเครื่องหมายอัญประกาศคู่ได้อย่างปลอดภัยด้วย Go syntax
%x ฐาน 16 ตัวพิมพ์เล็ก อักขระสองตัวต่อไบต์
%X ฐาน 16 ตัวพิมพ์ใหญ่ อักขระสองตัวต่อไบต์

นี่คือตัวอย่างการจัดรูปแบบสตริงด้วยเครื่องหมาย %s กริยา.

var score = "example" 
var result = fmt.Sprintf("This is a string formatting example %s", score)
fmt.Println(result)

แพ็คเกจ fmt จำเป็นสำหรับการเขียนโปรแกรม Python

ดิ fmt แพ็คเกจมีฟังก์ชันส่วนใหญ่ที่คุณต้องการสำหรับการจัดรูปแบบสตริง ไปยังให้ สตริง แพ็คเกจสำหรับการจัดการสตริงและ a บันทึก แพ็คเกจที่สามารถจัดรูปแบบสตริงสำหรับการบันทึก

ดิ fmt แพ็คเกจมีฟังก์ชั่นที่ใช้ io.นักเขียน และ io.Reader อินเทอร์เฟซ คุณจะพบว่ามีประโยชน์สำหรับกรณีการใช้งานหลายอย่าง เช่น การสร้างเว็บและแอปพลิเคชันบรรทัดคำสั่ง