fmt package — хэвлэх ба форматлах
Go-ийн fmt package нь "format" гэсэн үгийн товчлол. Энэ нь дэлгэцэнд гаралт хэвлэх, мөр форматлах, оролт авах зэрэг үйлдлийг агуулдаг. Хамгийн их ашигладаг Go-ийн стандарт сангийн нэг.
Print, Println, Printf
Хэвлэх гурван үндсэн функц бий — тус бүр арай өөр:
package main
import "fmt"
func main() {
// Print — шинэ мөр нэмэхгүй
fmt.Print("Нэг ")
fmt.Print("мөрт ")
fmt.Print("гарна")
fmt.Print("\n") // гараар шинэ мөр
// Println — автоматаар шинэ мөр нэмнэ
fmt.Println("Энэ нь")
fmt.Println("тусдаа мөрт")
// Printf — форматлах тэмдэгт ашиглана
name := "Батбаяр"
age := 19
fmt.Printf("%s-ийн нас %d байна.\n", name, age)
}
Гаралт:
Нэг мөрт гарна
Энэ нь
тусдаа мөрт
Батбаяр-ийн нас 19 байна.
Printf-д \n мартвал дараах мөр шууд залгаад гарна — анхаарч явах хэрэгтэй.
Форматлах тэмдэгтүүд (verbs)
Printf ба Sprintf функцэд форматлах тэмдэгтүүд ашиглана:
package main
import "fmt"
func main() {
name := "Оюун"
age := 21
score := 97.5
passed := true
rating := 4
fmt.Printf("Нэр: %s\n", name) // string
fmt.Printf("Нас: %d\n", age) // бүхэл тоо
fmt.Printf("Оноо: %.1f\n", score) // нэг аравтын бутархай
fmt.Printf("Тэнцсэн: %t\n", passed) // bool
fmt.Printf("Одны тоо: %d/5\n", rating)
// %v — аль ч төрлийн анхны хэлбэр
fmt.Printf("Утга: %v\n", name)
fmt.Printf("Утга: %v\n", age)
fmt.Printf("Утга: %v\n", score)
// %T — утгын төрлийг харуулах
fmt.Printf("Төрөл: %T\n", name)
fmt.Printf("Төрөл: %T\n", age)
fmt.Printf("Төрөл: %T\n", score)
}
Гаралт:
Нэр: Оюун
Нас: 21
Оноо: 97.5
Тэнцсэн: true
Одны тоо: 4/5
Утга: Оюун
Утга: 21
Утга: 97.5
Төрөл: string
Төрөл: int
Төрөл: float64
Хамгийн чухал тэмдэгтүүдийг санаж авах нь хангалттай:
| Тэмдэгт | Тайлбар | Жишээ |
| ------- | ----------- | ---------- |
| %s | string | "Монгол" |
| %d | бүхэл тоо | 42 |
| %f | float | 3.14 |
| %.2f | 2 аравт | 3.14 |
| %t | bool | true |
| %v | аль ч төрөл | автомат |
| %T | төрлийн нэр | string |
Sprintf — мөр үүсгэх
Printf нь дэлгэцэнд хэвлэдэг. Sprintf нь хэвлэхгүйгээр форматлагдсан мөр буцаадаг:
package main
import "fmt"
func main() {
name := "Дулам"
score := 88
// Мөр үүсгэж хувьсагчид хадгалах
msg := fmt.Sprintf("Сайн байна уу, %s! Таны оноо: %d.", name, score)
fmt.Println(msg)
// Тоог мөр болгох
numStr := fmt.Sprintf("%d", score)
fmt.Printf("Мөр: '%s', урт: %d\n", numStr, len(numStr))
}
Гаралт:
Сайн байна уу, Дулам! Таны оноо: 88.
Мөр: '88', урт: 2
Sprintf нь мэдэгдэл (notification), алдааны текст, database query зэрэг мөр бүтээхдээ маш их хэрэглэгддэг.
Errorf — алдааны мөр үүсгэх
package main
import (
"fmt"
)
func main() {
username := "bat"
// Форматлагдсан алдаа үүсгэх
err := fmt.Errorf("хэрэглэгч '%s' олдсонгүй", username)
fmt.Println(err)
}
Гаралт:
хэрэглэгч 'bat' олдсонгүй
fmt.Errorf нь Go-д алдаа буцаахад зориулагдсан. Алдааны хичээлд дэлгэрэнгүй үзнэ.
Scan — терминалаас оролт авах
fmt package нь хэрэглэгчээс оролт авах функцуудыг ч агуулдаг:
package main
import "fmt"
func main() {
var name string
fmt.Print("Нэрээ оруулна уу: ")
fmt.Scan(&name) // & нь заагч — дараа нь үзнэ
fmt.Printf("Сайн уу, %s!\n", name)
}
Ажиллуулбал:
Нэрээ оруулна уу: Номин
Сайн уу, Номин!
&name гэдэг нь "name хувьсагчийн хаяг" гэсэн утга — Scan оролтыг тэр хаягт бичнэ. Заагчийн хичээлд энэ ойлголтыг нарийвчлан үзнэ.
Дараагийн хичээлд:
+, -, *, /, % зэрэг математикийн операторууд болон ==, !=, >, < харьцуулалтын операторуудыг үзнэ. Операторуудыг мэдснээр тооцоолол хийх, нөхцөл шалгах үндэс тавигдана.