👨🏻💻 Вопрос от пользователя
rune и byte в чём разница?
Зачем придумали 2 отдельных типа данных и в чём их отличие и назначение?
Golang задачи с собеседований
rune и byte в чём разница?
Зачем придумали 2 отдельных типа данных и в чём их отличие и назначение?
Golang задачи с собеседований
👨🏻💻 Вопрос от пользователя
Ошибка подключения приложения к mysql / GO
Разрабатываю софт для парсинга баз данных mysql, столкнулся с ошибкой при использовании github.com/go-sql-driver/mysql. При запуске софта на Windows Server 2016 вылазит такая ошибка:
В чем может быть проблема?
Golang задачи с собеседований
Ошибка подключения приложения к mysql / GO
Разрабатываю софт для парсинга баз данных mysql, столкнулся с ошибкой при использовании github.com/go-sql-driver/mysql. При запуске софта на Windows Server 2016 вылазит такая ошибка:
[mysql] 2024/02/19 05:28:57 packets.go:36: read tcp 127.0.0.1:52891->127.0.0.1:1433: wsarecv: An existing connection was forcibly closed by the remote host.
[mysql] 2024/02/19 05:30:57 packets.go:36: read tcp 127.0.0.1:52923->127.0.0.1:1433: wsarecv: An existing connection was forcibly closed by the remote host.
Error pinging database: driver: bad connection
В чем может быть проблема?
Golang задачи с собеседований
👨🏻💻 Вопрос от пользователя
Организация структуры проекта с несколькими модулями Golang
В 1 проекте будут содержаться 3 различные программы: Repeater, Controller и Executor, полагаю что необходимо под каждый выделить свой модуль. И я хочу сделать 1 модуль который они будут импортировать с некоторым набором общих для них функций. Пока что максиум что вышло в каждый модуль добавить копии файла с этими общими функциями, что выглядит не очень. Я часа 4 ковырялся в статьях и видео уроках но так и не смог из 1 несчастного модуля импортировать функции в другой неменее несчастный модуль. Прошу помощи как можно подробнее обьясните как сделать то что я хочу если это вообще возможно.
Golang задачи с собеседований
Организация структуры проекта с несколькими модулями Golang
В 1 проекте будут содержаться 3 различные программы: Repeater, Controller и Executor, полагаю что необходимо под каждый выделить свой модуль. И я хочу сделать 1 модуль который они будут импортировать с некоторым набором общих для них функций. Пока что максиум что вышло в каждый модуль добавить копии файла с этими общими функциями, что выглядит не очень. Я часа 4 ковырялся в статьях и видео уроках но так и не смог из 1 несчастного модуля импортировать функции в другой неменее несчастный модуль. Прошу помощи как можно подробнее обьясните как сделать то что я хочу если это вообще возможно.
Golang задачи с собеседований
👨🏻💻 Вопрос от пользователя
Как в go сделать переменную с двумя типами и функцию вовращающую два типа
Как сделать так чтобы в переменной left можно было хранить как NumberNode так и BinaryOperationNode, и чтобы функция могла вовращать оба эти типа?
Код:
Golang задачи с собеседований
Как в go сделать переменную с двумя типами и функцию вовращающую два типа
Как сделать так чтобы в переменной left можно было хранить как NumberNode так и BinaryOperationNode, и чтобы функция могла вовращать оба эти типа?
Код:
func (p *Parser) Term() BinaryOperationNode {
left := p.Factor() // Factor возвращает NumberNode
for p.CurrentToken.Type_ == token.Number {
operation := p.CurrentToken
right := p.Factor()
left := node.BinaryOperationNode{LeftOperand: left.Value, RightOperand: right.Value, Operation: operation.Value}
}
return left
}
Golang задачи с собеседований
👨🏻💻 Вопрос от пользователя
После ввода команды в терминал ничего не происходит
После ввода команды (go env -w GOINSECURE=«имя проекта») в терминал ничего не происходит, в чем может быть проблема ?
Golang задачи с собеседований
После ввода команды в терминал ничего не происходит
После ввода команды (go env -w GOINSECURE=«имя проекта») в терминал ничего не происходит, в чем может быть проблема ?
Golang задачи с собеседований
👨🏻💻 Вопрос от пользователя
Я новичок в вебе и хочу отправить данные из моего API в другой API, но мой API отправляет, а другой почему-то не получает
Функция отправляющая данные:
эта функция получает данные, но выдает ошибку:
Когда я отправляю запрос из первой функции, я получаю:
Но вторая функция выдаёт:
Golang задачи с собеседований
Я новичок в вебе и хочу отправить данные из моего API в другой API, но мой API отправляет, а другой почему-то не получает
func main() {
r := gin.Default()
r.POST("/send-data", func(c *gin.Context) {
var token struct {
Api_key string `json:"accsestoken"`
}
var data struct {
Phone string `json:"phone"`
Amount float64 `json:"amount"`
}
if err := c.BindJSON(&data); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": "Invalid JSON"})
return
}
token.Api_key = tools.Create_token(data.Phone, data.Amount)
local_id := uuid.New()
payload := map[string]interface{}{
"api_key": token.Api_key,
"phone": data.Phone,
"amount": data.Amount,
"local_id": local_id.String(),
}
res, err := json.Marshal(payload)
if err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to prepare data"})
return
}
resp, err := http.Post("http://localhost:8000/api/trxs", "application/json", bytes.NewBuffer(res))
if err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to send data to target API"})
return
}
defer resp.Body.Close()
c.JSON(http.StatusOK, gin.H{"message": "Data sent successfully"})
})
r.Run(":3000")
}
Функция отправляющая данные:
r.POST("/api/trxs", func(c *gin.Context) {
var data struct {
Api_key string `json:"api_key"`
Phone string `json:"phone"`
Amount float64 `json:"amount"`
Local_id string `json:"local_id"`
}
if err := c.ShouldBindJSON(&data); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"unsuccess": false, "error": err.Error()})
return
}
fmt.Println(data)
// Возвращение данных клиенту
c.JSON(http.StatusOK, data)
})
r.Run(":8000")
эта функция получает данные, но выдает ошибку:
{
"error": "EOF",
"unsuccess": false
}
Когда я отправляю запрос из первой функции, я получаю:
{
"message": "Data sent successfully"
}
Но вторая функция выдаёт:
{
"error": "EOF",
"unsuccess": false
}
Golang задачи с собеседований
👨🏻💻 Вопрос от пользователя
Есть ли брокеры сообщений где можно сохранять объекты?
Прошу не пинать если вопрос глупый.
В пет-проекте понадобился брокер сообщений. Я пробовал натс но он работает только со строками.
А есть ли такие брокеры, которые умеют работать гибридно(pub/sub+p2p) и, главное, могут сохранять не только строки а ещё и объекты(структуры, мапы и т.д). P2P в приоритете, а гибрид необязательно но это задел на будущий функционал.
Да, знаю, что можно запаковать объект в json и сохранять как строку, но это накладные расходы на распаковку/запаковку каждой транзакции.
Да, работа ведётся с транзакциями, которые один пользователь запрашивает у другого. Может кто то считает что брокеры для этого не лучший вариант и знает вариант получше?
Golang задачи с собеседований
Есть ли брокеры сообщений где можно сохранять объекты?
Прошу не пинать если вопрос глупый.
В пет-проекте понадобился брокер сообщений. Я пробовал натс но он работает только со строками.
А есть ли такие брокеры, которые умеют работать гибридно(pub/sub+p2p) и, главное, могут сохранять не только строки а ещё и объекты(структуры, мапы и т.д). P2P в приоритете, а гибрид необязательно но это задел на будущий функционал.
Да, знаю, что можно запаковать объект в json и сохранять как строку, но это накладные расходы на распаковку/запаковку каждой транзакции.
Да, работа ведётся с транзакциями, которые один пользователь запрашивает у другого. Может кто то считает что брокеры для этого не лучший вариант и знает вариант получше?
Golang задачи с собеседований
👨🏻💻 Вопрос от пользователя
Как получить доступ к полям интерфейсного типа если знаю, что там за структура?
Есть
Golang задачи с собеседований
Как получить доступ к полям интерфейсного типа если знаю, что там за структура?
Есть
type Mover interface {
Move()
}
type M struct {
Name string
Age int
}
func doMoving(mover Mover) {
mover.Move()
// Если я знаю, что у меня под mover-ом структура M
//то как я могу получить в этом месте доступ к полям Name и Age?
// Чтобы можно было как то так:
// fmt.Println(mover.Name)
}
Golang задачи с собеседований
👨🏻💻 Вопрос от пользователя
Уведомлять пользователей telegram через определённый промежуток времени Golang
У меня есть телеграмм бот, который по взаимодействию с пользователем работает по типу "Запрос-ответ". Необходимой функцией этого бота является уведомлять пользователей в 9 утра о том, что нужно ввести новые данные с которыми он будет работать. Проблема заключается в том, что я не понимаю, как мне проверять текущее время периодически, поскольку код, который я использую для телеграмм бота, заканчивается входом в цикл for update := range updates , но внутри этого цикла, судя по логированию, я попадаю только, когда получаю сообщения от пользователя. Скорее всего я не до конца понимаю некоторых особенностей методов go-telegram-bot-api
Golang задачи с собеседований
Уведомлять пользователей telegram через определённый промежуток времени Golang
У меня есть телеграмм бот, который по взаимодействию с пользователем работает по типу "Запрос-ответ". Необходимой функцией этого бота является уведомлять пользователей в 9 утра о том, что нужно ввести новые данные с которыми он будет работать. Проблема заключается в том, что я не понимаю, как мне проверять текущее время периодически, поскольку код, который я использую для телеграмм бота, заканчивается входом в цикл for update := range updates , но внутри этого цикла, судя по логированию, я попадаю только, когда получаю сообщения от пользователя. Скорее всего я не до конца понимаю некоторых особенностей методов go-telegram-bot-api
func main() {
// используя токен создаем новый инстанс бота
bot, err := tgbotapi.NewBotAPI(telegramBotToken)
if err != nil {
log.Panic(err)
}
bot.Debug = true
log.Printf("Авторизация аккаунта бота %s", bot.Self.UserName)
// u - структура с конфигом для получения апдейтов
u := tgbotapi.NewUpdate(0)
u.Timeout = 1
// используя конфиг u создаем канал в который будут прилетать новые сообщения
updates := bot.GetUpdatesChan(u)
err = callAt(11, 17, 0, myfunc)
if err != nil {
fmt.Printf("error: %v\n", err)
}
//обработка сообщений
for update := range updates {
reply := "Не знаю что сказать"
msg := tgbotapi.NewMessage(update.Message.Chat.ID, reply)
msg.ReplyMarkup = board_StartCommand
if update.Message == nil {
continue
}
if _, err := bot.Send(msg); err != nil {
log.Panic(err)
}
}
}
Golang задачи с собеседований
👨🏻💻 Вопрос от пользователя
spf13/viper не может прочитать файл
По аналогии с https://github.com/gogjango/gjango/blob/master/config/config.go
вывод
сам файл в папке есть. ось - убунта. права 0775 накинул
Golang задачи с собеседований
spf13/viper не может прочитать файл
По аналогии с https://github.com/gogjango/gjango/blob/master/config/config.go
package config
import (
"fmt"
"log"
"os"
"path/filepath"
"read-clickhouse/tools"
"runtime"
"github.com/gin-gonic/gin"
"github.com/spf13/viper"
)
func check() {
_, filePath, _, _ := runtime.Caller(0)
configName := "config.dev.yaml"
configPath := filePath[:len(filePath)-9] + "files" + string(filepath.Separator)
filename := fmt.Sprintf("%s%s", configPath, configName)
if _, err := os.Stat(filename); err == nil {
fmt.Println("Файл существует")
} else if os.IsNotExist(err) {
fmt.Println("Файл не существует")
} else {
fmt.Println("Ошибка при проверке файла:", err)
}
}
// Load returns Configuration struct
func Load(env string) *Configuration {
check()
_, filePath, _, _ := runtime.Caller(0)
configName := "config." + env + ".yaml"
configPath := filePath[:len(filePath)-9] + "files" + string(filepath.Separator)
tools.DebugPrintf(configName)
viper.SetConfigName(configName)
viper.AddConfigPath(configPath)
err := viper.ReadInConfig()
if err != nil {
log.Fatal(err)
}
var config Configuration
viper.Unmarshal(&config)
setGinMode(config.Server.Mode)
return &config
}
// Configuration holds data necessery for configuring application
type Configuration struct {
Server *Server `yaml:"server"`
}
// Server holds data necessary for server configuration
type Server struct {
Mode string `yaml:"mode"`
}
func setGinMode(mode string) {
switch mode {
case "release":
gin.SetMode(gin.ReleaseMode)
break
case "test":
gin.SetMode(gin.TestMode)
break
default:
gin.SetMode(gin.DebugMode)
}
}
вывод
go run main.go
Файл существует
[/home/des/proj/go-read-clickhouse/config/config.go:read-clickhouse/config.Load 38]
%!(EXTRA string=config.dev.yaml)
2024/02/02 16:34:51 Config File "config.dev.yaml" Not Found in "[/home/des/proj/go-read-clickhouse/config/files]"
exit status 1
make: *** [Makefile:2: run] Ошибка 1
сам файл в папке есть. ось - убунта. права 0775 накинул
Golang задачи с собеседований
What does the following program print?
Anonymous Quiz
11%
[0 1 2 3] [0 2 3 3 3]
19%
[0 2 3 3] [0 2 3 3 3]
49%
[0 1 2 3] [0 2 3 2 3]
22%
[0 2 3 3] [0 2 3 2 3]
What does the following program print?
Anonymous Quiz
18%
0A,1B,2C,
21%
0A,1Z,2Z,
13%
0A,1M,2C,
4%
0A,1Z,2M,
36%
(infinite loop)
8%
0A,1M,2Z,