Доступ к реляционной базе данных c Golang
В этом руководстве представлены основы доступа к реляционной базе данных с помощью Go и пакета database/sql в его стандартной библиотеке.
Пакет database/sql, который вы будете использовать, включает типы и функции для подключения к базам данных, выполнения транзакций, отмены выполняемой операции и т. д.
В этом руководстве вы создадите базу данных, а затем напишете код для доступа к базе данных.
https://golang-blog.blogspot.com/2021/08/work-with-relational-database.html
В этом руководстве представлены основы доступа к реляционной базе данных с помощью Go и пакета database/sql в его стандартной библиотеке.
Пакет database/sql, который вы будете использовать, включает типы и функции для подключения к базам данных, выполнения транзакций, отмены выполняемой операции и т. д.
В этом руководстве вы создадите базу данных, а затем напишете код для доступа к базе данных.
https://golang-blog.blogspot.com/2021/08/work-with-relational-database.html
Blogspot
Доступ к реляционной базе данных c Golang
Открытие дескриптора базы данных с Golang
Пакет database/sql упрощает доступ к базе данных, уменьшая потребность в управлении соединениями. В отличие от многих API доступа к данным, с database/sql вы не открываете соединение явно, выполняете работу, а затем закрываете соединение. Вместо этого ваш код открывает дескриптор базы данных, который представляет пул соединений, а затем выполняет операции доступа к данным с помощью этого дескриптора, вызывая метод Close только тогда, когда это необходимо для освобождения ресурсов, таких как те, которые удерживаются извлеченными строками или подготовленным оператором.
Другими словами, это дескриптор базы данных, представленный sql.DB, обрабатывает соединения, открывая и закрывая их от имени вашего кода. Поскольку ваш код использует дескриптор для выполнения операций с базой данных, эти операции имеют конкурентный доступ к базе данных.
https://golang-blog.blogspot.com/2021/09/open-database-handle.html
Пакет database/sql упрощает доступ к базе данных, уменьшая потребность в управлении соединениями. В отличие от многих API доступа к данным, с database/sql вы не открываете соединение явно, выполняете работу, а затем закрываете соединение. Вместо этого ваш код открывает дескриптор базы данных, который представляет пул соединений, а затем выполняет операции доступа к данным с помощью этого дескриптора, вызывая метод Close только тогда, когда это необходимо для освобождения ресурсов, таких как те, которые удерживаются извлеченными строками или подготовленным оператором.
Другими словами, это дескриптор базы данных, представленный sql.DB, обрабатывает соединения, открывая и закрывая их от имени вашего кода. Поскольку ваш код использует дескриптор для выполнения операций с базой данных, эти операции имеют конкурентный доступ к базе данных.
https://golang-blog.blogspot.com/2021/09/open-database-handle.html
Blogspot
Открытие дескриптора базы данных с Golang
Выполнение операторов SQL, которые не возвращают данные, с пакетом database/sql в Golang
Когда вы выполняете действия с базой данных, которые не возвращают данные, используйте метод Exec или ExecContext из пакета database/sql. Операторы SQL, которые вы выполняете таким образом, включают INSERT, DELETE и UPDATE.
Если ваш запрос может возвращать строки, используйте вместо этого метод Query или QueryContext.
https://golang-blog.blogspot.com/2021/09/execute-sql-statements.html
Когда вы выполняете действия с базой данных, которые не возвращают данные, используйте метод Exec или ExecContext из пакета database/sql. Операторы SQL, которые вы выполняете таким образом, включают INSERT, DELETE и UPDATE.
Если ваш запрос может возвращать строки, используйте вместо этого метод Query или QueryContext.
https://golang-blog.blogspot.com/2021/09/execute-sql-statements.html
Blogspot
Выполнение операторов SQL, которые не возвращают данные, с пакетом database/sql в Golang
Запрос данных из базы данных с пакетом database/sql в Golang
При выполнении оператора SQL, который возвращает данные, используйте один из Query методов, предоставленных в пакете database/sql. Каждый из них возвращает Row или Rows, данные которых можно скопировать в переменные с помощью Scan метода. Вы можете использовать эти методы, например, для выполнения операторов SELECT.
https://golang-blog.blogspot.com/2021/09/query-data-from-db-sql.html
При выполнении оператора SQL, который возвращает данные, используйте один из Query методов, предоставленных в пакете database/sql. Каждый из них возвращает Row или Rows, данные которых можно скопировать в переменные с помощью Scan метода. Вы можете использовать эти методы, например, для выполнения операторов SELECT.
https://golang-blog.blogspot.com/2021/09/query-data-from-db-sql.html
Blogspot
Запрос данных из базы данных с пакетом database/sql в Golang
Использование подготовленных операторов с пакетом database/sql в Golang
Вы можете определить подготовленный оператор для повторного использования. Это может помочь вашему коду работать немного быстрее, избегая накладных расходов на повторное создание оператора каждый раз, когда ваш код выполняет операцию с базой данных.
https://golang-blog.blogspot.com/2021/09/prepared-statement-sql.html
Вы можете определить подготовленный оператор для повторного использования. Это может помочь вашему коду работать немного быстрее, избегая накладных расходов на повторное создание оператора каждый раз, когда ваш код выполняет операцию с базой данных.
https://golang-blog.blogspot.com/2021/09/prepared-statement-sql.html
Blogspot
Использование подготовленных операторов с пакетом database/sql в Golang
Выполнение транзакций с пакетом database/sql в Golang
Вы можете выполнять транзакции базы данных, используя sql.Tx, который представляет транзакцию. Помимо методов Commit и Rollback, представляющих семантику конкретной транзакции, sql.Tx имеет все методы, которые вы можете использовать для выполнения общих операций с базой данных. Чтобы получить sql.Tx, вызовите DB.Begin или DB.BeginTx.
https://golang-blog.blogspot.com/2021/09/database-sql-transactions.html
Вы можете выполнять транзакции базы данных, используя sql.Tx, который представляет транзакцию. Помимо методов Commit и Rollback, представляющих семантику конкретной транзакции, sql.Tx имеет все методы, которые вы можете использовать для выполнения общих операций с базой данных. Чтобы получить sql.Tx, вызовите DB.Begin или DB.BeginTx.
https://golang-blog.blogspot.com/2021/09/database-sql-transactions.html
Blogspot
Выполнение транзакций с пакетом database/sql в Golang
Отмена незавершенных операций с базой данных в Golang
Вы можете управлять незавершенными операциями с помощью Go context.Context. Контекст - это стандартное значение данных Go, которое может сообщать, была ли общая операция, которую он представляет, отменена и больше не нужна. Передавая context.Context между вызовами функций и сервисами в вашем приложении, они могут перестать работать раньше и возвращать ошибку, когда их обработка больше не требуется.
https://golang-blog.blogspot.com/2021/09/operations-cancelling.html
Вы можете управлять незавершенными операциями с помощью Go context.Context. Контекст - это стандартное значение данных Go, которое может сообщать, была ли общая операция, которую он представляет, отменена и больше не нужна. Передавая context.Context между вызовами функций и сервисами в вашем приложении, они могут перестать работать раньше и возвращать ошибку, когда их обработка больше не требуется.
https://golang-blog.blogspot.com/2021/09/operations-cancelling.html
Blogspot
Отмена незавершенных операций с базой данных в Golang
Управление подключениями к базе данных с пакетом database/sql в Golang
Для подавляющего большинства программ вам не нужно настраивать параметры пула соединений sql.DB по умолчанию. Но для некоторых продвинутых программ вам может потребоваться настроить параметры пула соединений или явно работать с соединениями. В этом посте объясняется, как это сделать.
Дескриптор базы данных sql.DB безопасен для одновременного использования несколькими горутинами (это означает, что дескриптор - это то, что другие языки могут назвать "потокобезопасным"). Некоторые другие библиотеки доступа к базе данных основаны на соединениях, которые могут использоваться только для одной операции за раз. Чтобы восполнить этот пробел, каждый sql.DB управляет пулом активных подключений к базе данных, создавая новые по мере необходимости для параллелизма в вашей программе Go.
https://golang-blog.blogspot.com/2021/09/db-connections-management.html
Для подавляющего большинства программ вам не нужно настраивать параметры пула соединений sql.DB по умолчанию. Но для некоторых продвинутых программ вам может потребоваться настроить параметры пула соединений или явно работать с соединениями. В этом посте объясняется, как это сделать.
Дескриптор базы данных sql.DB безопасен для одновременного использования несколькими горутинами (это означает, что дескриптор - это то, что другие языки могут назвать "потокобезопасным"). Некоторые другие библиотеки доступа к базе данных основаны на соединениях, которые могут использоваться только для одной операции за раз. Чтобы восполнить этот пробел, каждый sql.DB управляет пулом активных подключений к базе данных, создавая новые по мере необходимости для параллелизма в вашей программе Go.
https://golang-blog.blogspot.com/2021/09/db-connections-management.html
Blogspot
Управление подключениями к базе данных с пакетом database/sql в Golang
Как избежать риска внедрения SQL-кода с пакетом database/sql в Golang
Вы можете избежать риска внедрения SQL-кода, указав значения параметров SQL в качестве аргументов функции пакета sql. Многие функции в пакете sql предоставляют параметры для оператора SQL и значений, которые будут использоваться в параметрах этого оператора (другие предоставляют параметр для подготовленного оператора и параметров).
Код в следующем примере использует символ ? символ в качестве заполнителя для параметра id, который предоставляется как аргумент функции:
https://golang-blog.blogspot.com/2021/09/prevent-sql-injection.html
Вы можете избежать риска внедрения SQL-кода, указав значения параметров SQL в качестве аргументов функции пакета sql. Многие функции в пакете sql предоставляют параметры для оператора SQL и значений, которые будут использоваться в параметрах этого оператора (другие предоставляют параметр для подготовленного оператора и параметров).
Код в следующем примере использует символ ? символ в качестве заполнителя для параметра id, который предоставляется как аргумент функции:
// Правильный формат для выполнения оператора SQL с параметрами.
rows, err := db.Query("SELECT * FROM user WHERE id = ?", id)
https://golang-blog.blogspot.com/2021/09/prevent-sql-injection.html
Blogspot
Как избежать риска внедрения SQL-кода с пакетом database/sql в Golang
Разработка RESTful API с помощью Go и Gin
В этом посте представлены основы написания API RESTful веб-сервиса с помощью Go и Gin Web Framework (Gin).
Gin упрощает многие задачи кодирования, связанные с созданием веб-приложений, включая веб-сервисы. В этом руководстве вы будете использовать Gin для маршрутизации запросов, получения сведений о запросах и маршалинга JSON для ответов.
https://golang-blog.blogspot.com/2021/09/restful-api-gin.html
В этом посте представлены основы написания API RESTful веб-сервиса с помощью Go и Gin Web Framework (Gin).
Gin упрощает многие задачи кодирования, связанные с созданием веб-приложений, включая веб-сервисы. В этом руководстве вы будете использовать Gin для маршрутизации запросов, получения сведений о запросах и маршалинга JSON для ответов.
https://golang-blog.blogspot.com/2021/09/restful-api-gin.html
Blogspot
Разработка RESTful API с помощью Go и Gin
Пакет net/url в Golang
Пакет url анализирует URL-адреса и реализует экранирование запросов.
https://golang-blog.blogspot.com/2021/09/net-url-package-in-golang.html
Пакет url анализирует URL-адреса и реализует экранирование запросов.
https://golang-blog.blogspot.com/2021/09/net-url-package-in-golang.html
Blogspot
Пакет net/url в Golang
Пустой интерфейс в Golang
Пустой интерфейс может использоваться для хранения любых данных, и он может быть полезным параметром, поскольку может работать с любым типом.
https://golang-blog.blogspot.com/2021/10/empty-interface-in-golang.html
Пустой интерфейс может использоваться для хранения любых данных, и он может быть полезным параметром, поскольку может работать с любым типом.
https://golang-blog.blogspot.com/2021/10/empty-interface-in-golang.html
Blogspot
Пустой интерфейс в Golang
Go для Java разработчиков: Hello world пример
В постах Go для Java разработчиков будут представлены основные отличия Go для быстрого освоения Java разработчиками.
Начнем с небольшого, но полного примера. Он показывает, как реализовать и использовать простой абстрактный тип данных в Go.
https://golang-blog.blogspot.com/2021/10/go-for-java-developers-hello-world.html
В постах Go для Java разработчиков будут представлены основные отличия Go для быстрого освоения Java разработчиками.
Начнем с небольшого, но полного примера. Он показывает, как реализовать и использовать простой абстрактный тип данных в Go.
https://golang-blog.blogspot.com/2021/10/go-for-java-developers-hello-world.html
Blogspot
Go для Java разработчиков: Hello world пример
Go для Java разработчиков: основные отличия Go
Объектно-ориентированное программирование
* В Go нет классов с конструкторами. Вместо методов экземпляра, иерархии наследования классов и поиска динамических методов Go предоставляет структуры и интерфейсы.
* Go позволяет использовать методы любого типа; упаковка не требуется. Получатель метода, который соответствует this в Java, может быть прямым значением или указателем.
https://golang-blog.blogspot.com/2021/10/go-for-java-developers-go-diffs.html
Объектно-ориентированное программирование
* В Go нет классов с конструкторами. Вместо методов экземпляра, иерархии наследования классов и поиска динамических методов Go предоставляет структуры и интерфейсы.
* Go позволяет использовать методы любого типа; упаковка не требуется. Получатель метода, который соответствует this в Java, может быть прямым значением или указателем.
https://golang-blog.blogspot.com/2021/10/go-for-java-developers-go-diffs.html
Blogspot
Go для Java разработчиков: основные отличия Go
Go для Java разработчиков: синтаксис
Декларации
Синтаксис объявления обратный по сравнению с Java. Вы пишете имя, а затем тип. Объявления типов можно легко читать слева направо.
https://golang-blog.blogspot.com/2021/11/go-for-java-developers-syntax.html
Декларации
Синтаксис объявления обратный по сравнению с Java. Вы пишете имя, а затем тип. Объявления типов можно легко читать слева направо.
https://golang-blog.blogspot.com/2021/11/go-for-java-developers-syntax.html
Blogspot
Go для Java разработчиков: синтаксис
Go для Java разработчиков: константы, структуры, указатели
Константы
В Go константы могут быть нетипизированными. Это относится к
- числовым литералам,
- выражениям, использующим только нетипизированные константы,
- и объявлениям const, в которых тип не указан, а выражение инициализатора не типизировано.
https://golang-blog.blogspot.com/2021/11/go-for-java-developers-constants-structs-pointers.html
Константы
В Go константы могут быть нетипизированными. Это относится к
- числовым литералам,
- выражениям, использующим только нетипизированные константы,
- и объявлениям const, в которых тип не указан, а выражение инициализатора не типизировано.
https://golang-blog.blogspot.com/2021/11/go-for-java-developers-constants-structs-pointers.html
Blogspot
Go для Java разработчиков: константы, структуры, указатели
Go для Java разработчиков: срезы, создание значений
Срез - это концептуально структура с тремя полями:
* указатель на массив,
* длина,
* и емкость
https://golang-blog.blogspot.com/2021/11/go-for-java-developers-slices.html
Срез - это концептуально структура с тремя полями:
* указатель на массив,
* длина,
* и емкость
https://golang-blog.blogspot.com/2021/11/go-for-java-developers-slices.html
Blogspot
Go для Java разработчиков: срезы, создание значений
Go для Java разработчиков: методы и интерфейсы
Метод выглядит как обычное определение функции, за исключением того, что у него есть получатель. Получатель аналогичен ссылке this в методе экземпляра Java.
https://golang-blog.blogspot.com/2021/11/go-for-java-developers-methods-interfaces.html
Метод выглядит как обычное определение функции, за исключением того, что у него есть получатель. Получатель аналогичен ссылке this в методе экземпляра Java.
type MyType struct { i int }
func (p *MyType) Get() int {
return p.i
}
var pm = new(MyType)
var n = pm.Get()
https://golang-blog.blogspot.com/2021/11/go-for-java-developers-methods-interfaces.html
Blogspot
Go для Java разработчиков: методы и интерфейсы
Go для Java разработчиков: ошибки, паника и восстановление
Там, где Java обычно использует исключения, Go имеет два разных механизма:
- большинство функций возвращают ошибки;
- только действительно невосстановимые условия, такие как индекс вне допустимого диапазона, создают исключения во время выполнения.
https://golang-blog.blogspot.com/2021/11/go-for-java-developers-errors-panic-recover.html
Там, где Java обычно использует исключения, Go имеет два разных механизма:
- большинство функций возвращают ошибки;
- только действительно невосстановимые условия, такие как индекс вне допустимого диапазона, создают исключения во время выполнения.
https://golang-blog.blogspot.com/2021/11/go-for-java-developers-errors-panic-recover.html
Blogspot
Go для Java разработчиков: ошибки, паника и восстановление
Go для Java разработчиков: горутины и каналы
Go позволяет запустить новый поток выполнения, горутину (goroutine), с помощью оператора go. Он запускает функцию в другой, недавно созданной горутине. Все горутины в одной программе используют одно и то же адресное пространство.
https://golang-blog.blogspot.com/2021/11/go-for-java-developers-goroutines-channels.html
Go позволяет запустить новый поток выполнения, горутину (goroutine), с помощью оператора go. Он запускает функцию в другой, недавно созданной горутине. Все горутины в одной программе используют одно и то же адресное пространство.
https://golang-blog.blogspot.com/2021/11/go-for-java-developers-goroutines-channels.html
Blogspot
Go для Java разработчиков: горутины и каналы
Релиз Go 1.18
Релиз Go, версия 1.18, является важным релизом, включающим изменения в языке, реализации цепочки инструментов, среды выполнения и библиотек.
https://golang-blog.blogspot.com/2022/04/release-golang-1-18.html
Релиз Go, версия 1.18, является важным релизом, включающим изменения в языке, реализации цепочки инструментов, среды выполнения и библиотек.
https://golang-blog.blogspot.com/2022/04/release-golang-1-18.html
Blogspot
Релиз Go 1.18
Релиз Go, версия 1.18