database/sql
вместе с драйвером для конкретной базы данных, например, github.com/go-sql-driver/mysql
для MySQL.
import (
"database/sql"
_ "github.com/go-sql-driver/mysql"
)
func main() {
// Открытие соединения с базой данных
db, err := sql.Open("mysql", "user:password@tcp(127.0.0.1:3306)/dbname")
if err != nil {
panic(err)
}
defer db.Close()
}
Query
или Exec
.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7✍1
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍3
const
. Константы представляют собой неизменяемые значения, которые определяются на этапе компиляции. Они могут быть числовыми, строковыми или булевыми.
package main
import "fmt"
func main() {
// Объявление числовой константы
const pi = 3.14
// Объявление строковой константы
const greeting = "Привет, мир!"
// Использование констант в коде
fmt.Println("Значение pi:", pi)
fmt.Println(greeting)
}
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤3
go get
используется для загрузки и установки удалённых пакетов и их зависимостей в Go. Она также обновляет модули в go.mod
.go get github.com/user/repo
# Загрузить и установить пакет из удалённого репозитория
go get -u github.com/user/repo
# Обновить пакет до последней версии
go get
больше не используется для установки бинарных файлов. Для этого применяется go install
.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Пакет
1⃣
2⃣
3⃣
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Go собеседования
fmt
предоставляет функции для форматированного ввода-вывода.Println
и Printf
для вывода:package main
import "fmt"
func main() {
name := "Alice"
age := 30
// Println добавляет пробелы между аргументами и перевод строки в конце
fmt.Println("Name:", name, "Age:", age)
// Printf позволяет использовать форматные спецификаторы
fmt.Printf("Name: %s, Age: %d\n", name, age)
}
Sprintf
для форматирования строк:
formatted := fmt.Sprintf("Name: %s, Age: %d", name, age)
// Возвращает отформатированную строку без вывода на консоль
Scan
и Scanf
для ввода:var input string
fmt.Scanln(&input)
// Считывает строку из стандартного ввода до перевода строки
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤1🤔1
new
используется для выделения памяти под новый нулевой экземпляр указанного типа и возвращает указатель на него. make
, который используется для инициализации срезов, карт и каналов, new
не инициализирует память, а лишь выделяет её, возвращая указатель на тип.package main
import "fmt"
func main() {
p := new(int) // выделяет память для int и возвращает указатель
fmt.Println(*p) // выводит 0, так как значение по умолчанию для int — ноль
*p = 42 // изменяет значение через указатель
fmt.Println(*p) // выводит 42
}
new
полезен для создания указателей на типы без явного объявления переменной.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥3
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
math/rand
. Он предоставляет функции для генерации псевдослучайных чисел.
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
rand.Seed(time.Now().UnixNano()) // Инициализация генератора случайных чисел текущим временем
randomInt := rand.Intn(100) // Генерация случайного целого числа от 0 до 99
fmt.Println(randomInt)
randomFloat := rand.Float64() // Генерация случайного числа с плавающей точкой от 0.0 до 1.0
fmt.Println(randomFloat)
}
Seed
необходима для получения разных последовательностей случайных чисел при каждом запуске программы.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥1
testing
используется для создания и выполнения тестов. Он предоставляет инструменты для написания тестовых функций, которые проверяют корректность кода.package main
import (
"testing"
)
// Пример тестовой функции
func TestSum(t *testing.T) {
result := Sum(2, 3)
expected := 5
if result != expected {
t.Errorf("Expected %d, got %d", expected, result)
}
}
// Функция, которую тестируем
func Sum(a, b int) int {
return a + b
}
go test
. Пакет testing
позволяет автоматизировать проверку кода и улучшать его надежность.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤2
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤3
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥1
Паттерны проектирования делятся на три основные группы:
1️⃣ Порождающие паттерны: Эти паттерны фокусируются на процессе создания объектов, обеспечивая гибкость и повторное использование кода. Основные порождающие паттерны включают Фабричный метод, Абстрактная фабрика, Строитель, Прототип и Одиночка.
2️⃣ Структурные паттерны: Эти паттерны определяют, как классы и объекты могут быть объединены для формирования более крупных структур. К ним относятся Адаптер, Мост, Компоновщик, Декоратор, Фасад, Легковес и Заместитель.
3️⃣ Поведенческие паттерны: Эти паттерны связаны с взаимодействием между объектами и распределением обязанностей. Основные поведенческие паттерны включают Цепочку обязанностей, Команду, Итератор, Посредник, Хранитель, Наблюдатель, Состояние, Стратегию, Шаблонный метод и Посетитель.
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Go собеседования
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5💯1
encoding/json
. Для этого используется функция json.Marshal()
, которая преобразует структуру в JSON-формат.
package main
import (
"encoding/json"
"fmt"
)
// Определение структуры
type User struct {
Name string `json:"name"`
Age int `json:"age"`
}
func main() {
// Создание экземпляра структуры
user := User{Name: "Alice", Age: 30}
// Сериализация структуры в JSON
jsonData, err := json.Marshal(user)
if err != nil {
fmt.Println(err)
return
}
// Вывод JSON-строки
fmt.Println(string(jsonData))
}
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤2
make
:ch := make(chan int)
<-
:// Отправка данных в канал
ch <- 42
// Получение данных из канала
value := <-ch
Каналы могут быть буферизированными или небуферизированными, что влияет на их поведение при отправке и получении данных.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7💯1