Пакеты и импорты
Часть раздела Объектно-ориентированное программирование путешествия по GO на Coddy — урок 3 из 107.
Каждый файл Go начинается с объявления package. Ключевое слово import подключает пакеты из стандартной библиотеки Go, чтобы вы могли использовать их функции.
Импорт одного пакета
import "fmt"Импорт нескольких пакетов с использованием блока import
import (
"fmt"
"math"
"strings"
)Используйте функции из импортированных пакетов с именем пакета в качестве префикса
package main
import (
"fmt"
"strings"
"math"
)
func main() {
upper := strings.ToUpper("hello")
fmt.Println(upper) // Вывод: HELLO
root := math.Sqrt(16)
fmt.Println(root) // Вывод: 4
}Распространенные пакеты стандартной библиотеки
"fmt" // Форматированный ввод-вывод (Print, Scan, Sprintf)
"strings" // Манипуляции со строками (ToUpper, Contains, Replace)
"math" // Математические функции (Sqrt, Pow, Pi)
"strconv" // Преобразование строк (Itoa, Atoi)Вы обращаетесь к функциям из пакета, используя packagename.FunctionName. Go позволяет импортировать только те пакеты, которые вы действительно используете — неиспользуемые импорты вызывают ошибку компиляции.
Задание
СреднеИсправьте инструкцию импорта в utils.go, чтобы функции работали правильно. Вам необходимо импортировать пакеты strings и math:
FormatTextиспользуетstrings.ToUpperContainsWordиспользуетstrings.ContainsSquareRootиспользуетmath.Sqrt
Шпаргалка
Каждый файл Go начинается с объявления package. Используйте ключевое слово import для подключения пакетов из стандартной библиотеки Go.
Импорт одного пакета:
import "fmt"Импорт нескольких пакетов с использованием блока импорта:
import (
"fmt"
"math"
"strings"
)Доступ к функциям из импортированных пакетов осуществляется с помощью packagename.FunctionName:
package main
import (
"fmt"
"strings"
"math"
)
func main() {
upper := strings.ToUpper("hello")
fmt.Println(upper) // Вывод: HELLO
root := math.Sqrt(16)
fmt.Println(root) // Вывод: 4
}Распространенные пакеты стандартной библиотеки:
"fmt" // Форматированный ввод-вывод (Print, Scan, Sprintf)
"strings" // Манипуляции со строками (ToUpper, Contains, Replace)
"math" // Математические функции (Sqrt, Pow, Pi)
"strconv" // Преобразование строк (Itoa, Atoi)Примечание: Go позволяет импортировать только те пакеты, которые вы действительно используете — неиспользуемые импорты вызывают ошибку компиляции.
Попробуйте сами
package main
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
)
func main() {
scanner := bufio.NewScanner(os.Stdin)
scanner.Scan()
line := scanner.Text()
parts := strings.Fields(line)
numStr := parts[len(parts)-1]
text := strings.Join(parts[:len(parts)-1], " ")
num, _ := strconv.ParseFloat(numStr, 64)
fmt.Printf("Upper: %s\n", FormatText(text))
fmt.Printf("Contains 'world': %t\n", ContainsWord(text, "world"))
fmt.Printf("Sqrt: %.2f\n", SquareRoot(num))
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Объектно-ориентированное программирование
1Основы ООП в Go
Внешние файлыРабочее пространство и модули GoПакеты и импортыЭкспортируемые и неэкспортируемые именаВведение в ООП в GoСтруктуры как классыОпределение методов структурПолучатели-указатели и получатели-значенияИнициализация структурФункции-конструкторыИтоги — Простой калькулятор4Интерфейсы
Введение в интерфейсыНеявная реализацияИнтерфейс как контрактПустой интерфейс (any)Утверждение типаПереключатель типовКомпозиция интерфейсовИнтерфейсы Stringer и ErrorПовторение: Калькулятор фигур7Инкапсуляция
Экспортируемые и неэкспортируемые поляИнкапсуляция на уровне пакетовГеттеры и сеттерыСокрытие информации в GoИтоги — Записи о студентах10Обобщения (Generics) (Go 1.18+)
Введение в GenericsПараметры типовОграничения типовОбобщенные структурыОбходной путь для обобщенных методовИтоги — Обобщенная коллекция13Паттерны проектирования. Часть 1
Введение в паттерны проектированияПаттерн SingletonПаттерн FactoryПаттерн Abstract FactoryПаттерн ObserverПаттерн Strategy2Глубокое погружение в типы и структуры
Базовые и составные типыОпределение пользовательских типовТеги структурАнонимные структурыВложенные структурыНулевые значения и значения по умолчаниюПовторение — Контактная книга5Композиция вместо наследования
Почему в Go нет наследованияОсновы встраивания структурПродвижение методовВстраивание нескольких структурВстраивание против агрегацииЗатенение встроенных методовИтоги — Иерархия сотрудников8Обработка ошибок и ООП
Интерфейс errorПользовательские типы ошибокОбертывание ошибок (fmt.Errorf)Sentinel-ошибкиerrors.Is() и errors.As()Panic, Defer и RecoverИтоги — Парсер файлов11Стандартная библиотека и ООП
io.Reader и io.Writersort.InterfaceИнтерфейс fmt.Stringerencoding/json со структурамиИнтерфейс http.HandlerПовторение: модели REST API14Паттерны проектирования. Часть 2
Паттерн КомандаПаттерн АдаптерПаттерн ДекораторПаттерн Шаблонный методПаттерн СостояниеПаттерн КомпоновщикMiddleware как Декоратор3Указатели и память
Основы указателей в GoУказатели на структурыПередача по значению и по ссылкеФункция new()Сборка мусора в GoПовторение: Конструктор связного списка6Полиморфизм в Go
Полиморфизм через интерфейсыУтиная типизация в GoПравила реализации интерфейсовПолиморфные коллекцииВнедрение зависимостейИтоги — Обработчик платежей9Конкурентность и ООП
Основы горутинКаналы и взаимодействиеБуферизованные и небуферизованные каналыОператор selectsync.Mutex и sync.RWMutexsync.WaitGroupПроектирование потокобезопасных структурПовторение — Worker Pool