Golang ทำไม package fmt ถึงสำคัญสำหรับผู้เริ่มต้น EP3

Sharing is caring!

package fmt คืออะไร

ใช้ I/O ที่จัดรูปแบบด้วยฟังก์ชันที่คล้ายคลึงกับ printf และ scanf ของภาษา C รูปแบบการกร มาจาก C แต่ง่ายกว่า

fmt.Println

  • การ Print แบบขึ้นบรรทัดใหม่ ด้วย fmt.Println(“message”) //=> message
  • การ Print หลาย args แบบขึ้นบรรทัดใหม่ fmt.Println(“arg0 := “,10,”, arg1 := “,99) // => arg0 := 10, arg1 := 99
 fmt.Println("Hello Go World!") // => Hello Go World!

fmt.Printf

  • การ Print ที่จะสามารถกำหนด format ของ message ได้โดย format ที่กำหนดมีอยู่ด้วยกันหลายรูปแบบ เช่น
    • %d -> decimal
    • %f -> float
    • %s -> string
    • %q -> double-quoted string
    • %v -> value (any)
    • %#v -> a Go-syntax representation of the value
    • %T -> value Type
    • %t -> bool (true or false)
    • %p -> pointer (address in base 16, with leading 0x)
    • %c -> char (rune) represented by the corresponding Unicode code poi
 fmt.Printf()

ตัวอย่างการใช้งาน fmt.Printf

a, b, c := 10, 15.5, "Gophers"
grades := []int{10, 20, 30}
 
fmt.Printf("a is %d, b is %f, c is %s \n", a, b, c)    // => a is 10, b is 15.500000, c is Gophers
fmt.Printf("%q\n", c)                      // => "Gophers"
fmt.Printf("%v\n", grades)                 // => [10 20 30]
fmt.Printf("%#v\n", grades)                // => b is of type float64 and grades is of type []int
fmt.Printf("b is of type %T and grades is of type %T\n", b, grades) 
    // => b is of type float64 and grades is of type []int
fmt.Printf("The address of a: %p\n", &a)    // => The address of a: 0xc000016128
fmt.Printf("%c and %c\n", 100, 51011)       // =>  d and 읃  (runes for code points 101 and 51011)

แต่ถ้าอยากที่จะขึ้นบรรทัดใหม่ด้วยก็ให้ เพิ่ม \n ใน fmt.Printf(“%q\n”, c) ก็จะได้การขึ้นบรรทัดใหม่ด้วย

fmt.Sprintf

ใช้งานเหมือน Printf แต่จะ return เป็น string

a, b, c := 10, 15.5, "Gophers"
// fmt.Sprintf() returns a string. Uses the same verbs as fmt.Printf()
s := fmt.Sprintf("a is %d, b is %f, c is %s \n", a, b, c)
fmt.Println(s) // => a is 10, b is 15.500000, c is Gophers