error
, который требует наличие метода Error() string
.
package main
import (
"fmt"
)
// CustomError представляет пользовательскую ошибку
type CustomError struct {
Message string
}
// Error возвращает сообщение об ошибке
func (e *CustomError) Error() string {
return e.Message
}
func main() {
err := &CustomError{Message: "Произошла ошибка"}
fmt.Println(err.Error())
}
Этот код демонстрирует создание пользовательской ошибки с помощью структуры
CustomError
и метода Error()
.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤1
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6✍1
Для начала профилирования необходимо импортировать пакет
net/http/pprof
в код приложения. Затем добавить обработчики HTTP-запросов для профилей:
import _ "net/http/pprof"
import "net/http"
func main() {
go func() {
// Запуск HTTP-сервера для pprof
http.ListenAndServe(":6060", nil)
}()
// Основная логика приложения
}
http://localhost:6060/debug/pprof/
. Для анализа можно использовать команды go tool pprof
.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥2
database/sql
предоставляет интерфейс для работы с базами данных. Для начала работы необходимо подключиться к базе данных с помощью функции sql.Open
.
import (
"database/sql"
_ "github.com/go-sql-driver/mysql" // Импорт драйвера для 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()
// Выполнение запроса
rows, err := db.Query("SELECT id, name FROM users")
if err != nil {
panic(err)
}
defer rows.Close()
// Обработка результатов
for rows.Next() {
var id int
var name string
if err := rows.Scan(&id, &name); err != nil {
panic(err)
}
fmt.Println(id, name)
}
}
Этот код подключается к MySQL, выполняет запрос и обрабатывает результаты.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6✍5
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤2
os
. Функция os.OpenFile
позволяет задать режимы открытия файла, такие как чтение, запись или добавление.
package main
import (
"os"
"log"
)
func main() {
// Открытие файла для записи, создание файла, если он не существует
file, err := os.OpenFile("example.txt", os.O_WRONLY|os.O_CREATE, 0644)
if err != nil {
log.Fatal(err)
}
defer file.Close()
// Запись строки в файл
_, err = file.WriteString("Hello, Go!")
if err != nil {
log.Fatal(err)
}
}
Этот код открывает файл
example.txt
для записи, создавая его, если он отсутствует.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤1🤔1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤1
package main
import "fmt"
// Интерфейс Speaker с одним методом Speak
type Speaker interface {
Speak() string
}
// Тип Dog, реализующий интерфейс Speaker
type Dog struct{}
func (d Dog) Speak() string {
return "Woof!"
}
func main() {
var s Speaker = Dog{}
fmt.Println(s.Speak()) // Вывод: Woof!
}
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥1
package main
import (
"fmt"
"time"
)
func main() {
ch1 := make(chan string)
ch2 := make(chan string)
go func() {
time.Sleep(1 * time.Second)
ch1 <- "Сообщение из канала 1"
}()
go func() {
time.Sleep(2 * time.Second)
ch2 <- "Сообщение из канала 2"
}()
select {
case msg1 := <-ch1:
fmt.Println(msg1) // Обработка сообщения из канала 1
case msg2 := <-ch2:
fmt.Println(msg2) // Обработка сообщения из канала 2
}
}
select
позволяет эффективно управлять конкурентными операциями, обрабатывая данные по мере их поступления.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤1
for
, которое является единственной конструкцией для создания циклов в языке. Существует три основных формы использования for
.for {
// Бесконечный цикл
}
for condition {
// Выполняется, пока условие истинно
}
for i := 0; i < 10; i++ {
// Выполняется 10 раз
for
также может использоваться для итерации по срезам, картам и каналам с помощью range
.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤1🤔1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤1
package main
import "fmt"
func main() {
// Создание среза
nums := []int{1, 2, 3, 4, 5}
fmt.Println(nums)
// Изменение элемента через указатель
changeFirstElement(&nums[0])
fmt.Println(nums)
}
func changeFirstElement(num *int) {
// Изменение значения по указателю
*num = 10
}
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤1
Основным файлом модуля является
go.mod
, он содержит информацию о модуле, его зависимостях и версии.
module example.com/my-module
go 1.18
require (
example.com/somepackage v1.2.3
)
Файл
go.sum
фиксирует версии зависимостей для обеспечения целостности.Для работы с модулями используются команды
go mod init
, go mod tidy
, go mod vendor
и другие.Модули упрощают управление зависимостями, позволяют использовать разные версии пакетов в разных проектах и улучшают сборку.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥4
main()
является точкой входа в программу. Когда программа запускается, выполнение начинается именно с этой функции. Она должна находиться в пакете main
, иначе программа не сможет быть скомпилирована как исполняемый файл.
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
В этом примере
main()
выводит сообщение "Hello, World!". Без функции main()
программа не сможет запуститься, так как компилятор не найдет точку входа. Все остальные функции и пакеты вызываются прямо или косвенно из main()
.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8✍2