Стандартная библиотека
Обзор стандартной библиотеки Go: fmt, strings, strconv, time и encoding/json.
Сила Go во многом — в его богатой стандартной библиотеке. Многое, для чего в других языках тянут внешние пакеты, в Go есть «из коробки».
strings: работа с текстом
Пакет strings покрывает почти все операции со строками: поиск, замену, регистр, разбиение, склейку.
package main
import (
"fmt"
"strings"
)
func main() {
s := "Привет, Go"
fmt.Println(strings.ToUpper(s))
fmt.Println(strings.Contains(s, "Go"))
fmt.Println(strings.Replace(s, "Go", "мир", 1))
fmt.Println(strings.Split("a,b,c", ","))
}Вывод:
ПРИВЕТ, GO true Привет, мир [a b c]
strconv: числа и строки
Преобразования между строками и числами — это strconv. Atoi (строка в int), Itoa (int в строку), ParseFloat и другие. Все они возвращают ошибку, если разбор не удался.
package main
import (
"fmt"
"strconv"
)
func main() {
n, _ := strconv.Atoi("42")
fmt.Println(n + 8)
fmt.Println(strconv.Itoa(100) + "!")
}Вывод:
50 100!
time: даты и длительности
Пакет time отвечает за моменты времени и интервалы. У Go необычный, но запоминающийся формат дат: эталон 2006-01-02 15:04:05 (по нему и задают шаблон).
package main
import (
"fmt"
"time"
)
func main() {
d := 90 * time.Minute
fmt.Println(d) // 1h30m0s
fmt.Println(d.Hours()) // 1.5
}Вывод:
1h30m0s 1.5
encoding/json: сериализация
JSON в Go встроен. Структуру превращают в JSON через json.Marshal и обратно через json.Unmarshal. Имена полей в JSON задают тегами в обратных кавычках. Экспортируются только поля с заглавной буквы — это важно.
package main
import (
"encoding/json"
"fmt"
)
type User struct {
Name string `json:"name"`
Age int `json:"age"`
}
func main() {
u := User{Name: "Аня", Age: 30}
data, _ := json.Marshal(u)
fmt.Println(string(data))
var u2 User
json.Unmarshal([]byte(`{"name":"Борис","age":25}`), &u2)
fmt.Println(u2.Name, u2.Age)
}Вывод:
{"name":"Аня","age":30}
Борис 25| Пакет | Для чего |
fmt | ввод-вывод, форматирование |
strings | операции со строками |
strconv | строки ⇄ числа |
time | время и длительности |
encoding/json | JSON-сериализация |
os, io, net/http | файлы, потоки, сеть |
Итог
- Стандартная библиотека закрывает строки, числа, время, JSON, файлы и сеть без внешних пакетов.
- В
encoding/jsonтеги полей задают имена ключей; сериализуются только экспортируемые поля. - Документация любого пакета — на
pkg.go.devи черезgo doc.