Как выбрать файл через системный проводник?
В программе понадобилось открыть проводник и выбрать в нем файл. Как я вижу использование: при работе в терминальной программе я могу ввести опрелеленную комманду и откроется системный проводник в котором можно выбрать файл. После выбора файла в проводнике, в терминальную программу копируется путь к выбранному файлу, а проводник молча закрывается. Далее над файлом по пути осуществляются какие то действия в коде. Как это(открытие прводника и выбор в нем файла) реализовать средствами go? Пишу код и тестирую в debian, соответственно решение необходимо под unix в первую очередь
В программе понадобилось открыть проводник и выбрать в нем файл. Как я вижу использование: при работе в терминальной программе я могу ввести опрелеленную комманду и откроется системный проводник в котором можно выбрать файл. После выбора файла в проводнике, в терминальную программу копируется путь к выбранному файлу, а проводник молча закрывается. Далее над файлом по пути осуществляются какие то действия в коде. Как это(открытие прводника и выбор в нем файла) реализовать средствами go? Пишу код и тестирую в debian, соответственно решение необходимо под unix в первую очередь
Как использовать gemini api в приложении?
Я чайник и пытаюсь потрогать gemini api. Делаю по инструкции.
Зашел в ai studio получил новый
Сохранил этот ключ в константу key
Далее функция
func main() {
ctx := context.Background()
client, err := genai.NewClient(ctx, option.WithAPIKey(key))
if err != nil {
log.Fatal(err)
}
defer client.Close()
model := client.GenerativeModel(modelName)
chat := model.StartChat()
test := "hello. Are you working now?"
resp, err := chat.SendMessage(ctx, genai.Text(test))
if err != nil {
log.Fatal(err)
}
log.Println(resp.PromptFeedback)
}
Получаю nil в ответ nil. А как добиться от этого кода ответа на поставленный вопрос?
Я чайник и пытаюсь потрогать gemini api. Делаю по инструкции.
Зашел в ai studio получил новый
Сохранил этот ключ в константу key
Далее функция
func main() {
ctx := context.Background()
client, err := genai.NewClient(ctx, option.WithAPIKey(key))
if err != nil {
log.Fatal(err)
}
defer client.Close()
model := client.GenerativeModel(modelName)
chat := model.StartChat()
test := "hello. Are you working now?"
resp, err := chat.SendMessage(ctx, genai.Text(test))
if err != nil {
log.Fatal(err)
}
log.Println(resp.PromptFeedback)
}
Получаю nil в ответ nil. А как добиться от этого кода ответа на поставленный вопрос?
Не работает консольная GO игра на другой OS windows
Сделал небольшое консольное приложение на go, собрал его под свою ОС (linux mint) оно запускается и работет нормально, Но стоит мне собрать его под виндовс 10 оно не работает
package main
import (
"fmt"
"bufio"
"log"
"math/rand"
"os"
"strconv"
"time"
"strings"
)
func main() {
i := 10
fmt.Println("Game Guess Number! (1 - 15)")
fmt.Println("You have", i, "Attempts", "\n")
for i = i; i > 0; i-- {
seconds := time.Now().UnixNano()
rand.Seed(seconds)
target := float64(rand.Intn(15) + 1)
fmt.Println("Attempt: " ,i)
fmt.Print("Your guess: ", "\n")
reader := bufio.NewReader(os.Stdin)
input, err := reader.ReadString('\n')
if err != nil {
log.Fatal(err)
}
input = strings.TrimSpace(input)
guess, err := strconv.ParseFloat(input, 64)
if err != nil {
fmt.Println("error type is not a number")
log.Fatal(err)
}
if guess == target {
fmt.Println("You Won!!!", "\n")
break
} else if guess > target {
fmt.Println("Too High", "\n")
} else if guess < target {
fmt.Println("Too Low", "\n")
}
}
if i == 0 {
fmt.Println("You lose :(", "\n")
}
fmt.Println("Game End")
}
wine GuessNumberGame.exe
0074:err:winediag:is_broken_driver Broken NVIDIA RandR detected, falling back to RandR 1.0. Please consider using the Nouveau driver instead.
Game Guess Number! (1 - 100)
You have 10 Attempts
Attempt: 10
Your guess:
2024/08/28 01:58:12 read /dev/stdin: input/output error
~/Документы/temps main !1 ?1 01:58:12 ─╮
❯ 0034:err:winediag:is_broken_driver Broken NVIDIA RandR detected, falling back to RandR 1.0. Please consider using the Nouveau driver instead.
Сделал небольшое консольное приложение на go, собрал его под свою ОС (linux mint) оно запускается и работет нормально, Но стоит мне собрать его под виндовс 10 оно не работает
package main
import (
"fmt"
"bufio"
"log"
"math/rand"
"os"
"strconv"
"time"
"strings"
)
func main() {
i := 10
fmt.Println("Game Guess Number! (1 - 15)")
fmt.Println("You have", i, "Attempts", "\n")
for i = i; i > 0; i-- {
seconds := time.Now().UnixNano()
rand.Seed(seconds)
target := float64(rand.Intn(15) + 1)
fmt.Println("Attempt: " ,i)
fmt.Print("Your guess: ", "\n")
reader := bufio.NewReader(os.Stdin)
input, err := reader.ReadString('\n')
if err != nil {
log.Fatal(err)
}
input = strings.TrimSpace(input)
guess, err := strconv.ParseFloat(input, 64)
if err != nil {
fmt.Println("error type is not a number")
log.Fatal(err)
}
if guess == target {
fmt.Println("You Won!!!", "\n")
break
} else if guess > target {
fmt.Println("Too High", "\n")
} else if guess < target {
fmt.Println("Too Low", "\n")
}
}
if i == 0 {
fmt.Println("You lose :(", "\n")
}
fmt.Println("Game End")
}
wine GuessNumberGame.exe
0074:err:winediag:is_broken_driver Broken NVIDIA RandR detected, falling back to RandR 1.0. Please consider using the Nouveau driver instead.
Game Guess Number! (1 - 100)
You have 10 Attempts
Attempt: 10
Your guess:
2024/08/28 01:58:12 read /dev/stdin: input/output error
~/Документы/temps main !1 ?1 01:58:12 ─╮
❯ 0034:err:winediag:is_broken_driver Broken NVIDIA RandR detected, falling back to RandR 1.0. Please consider using the Nouveau driver instead.
Что произойдёт, если мьютекс заблокирован, но горутина завершится до вызова Unlock?
Anonymous Poll
21%
Мьютекс автоматически разблокируется
15%
Программа завершится с ошибкой
67%
Мьютекс останется заблокированным навсегда
⁉️ Что будет при делении целого отрицательного числа на ноль в Go?
Anonymous Poll
6%
Вернётся бесконечность
83%
Произойдет паника
8%
Вернётся отрицательная бесконечность
6%
Вернётся ноль
Когда деление на ноль в Go НЕ приводит к панике?
Anonymous Poll
46%
Никогда
5%
При делении целого числа на ноль
38%
При работе с числами с плавающей запятой
14%
Каждый вторник и четверг
Можно ли использовать тип interface{} в качестве ключа в мапе?
Anonymous Poll
28%
Да, в любом случае
20%
Да, если интерфейс не пустой
53%
Нет
Какие объекты очищаются сборщиком мусора?
Anonymous Poll
4%
Все объекты в памяти
94%
Объекты, на которые больше нет ссылок
5%
Только объекты в стеке
2%
Объекты с размером более 25 Мб
Что делает параметр GOGC?
Anonymous Poll
5%
Увеличивает объём стека
81%
Регулирует частоту вызова GC
13%
Очищает все объекты в памяти
4%
Ускоряет работу горутин
Какие этапы включает работа GC?
Anonymous Poll
45%
Маркировка, Компактирование, Очистка
17%
Выделение, Проверка, Удаление
39%
Маркировка, Очистка, Компактирование
4%
Трассировка, Кэширование, Удаление
❓Какой из следующих вариантов НЕ является типичной задачей для go vet?
Anonymous Poll
10%
Проверка использования неправильных форматов в fmt.Printf
7%
Поиск неиспользуемых переменных
79%
Оценка производительности программы
9%
Поиск недостающих или лишних аргументов в вызовах функций
Почему массив arr остался или не остался изменённым?
Anonymous Poll
9%
Срезы всегда создают копию массива
9%
Append всегда создаёт новый массив
59%
Срезы ссылаются на тот же массив, и append может изменить массив, если у среза достаточно емкости
38%
Массивы в Go неизменяемы
💡 Создайте простой кэш в памяти с использованием языка Go
Делитесь своими решениями в комментариях! 👇
Там же можно найти ответ!
Делитесь своими решениями в комментариях! 👇
Там же можно найти ответ!
❓Почему порядок перебора элементов в map случайный?
Anonymous Poll
19%
Go специально перемешивает ключи перед каждым вызовом range
2%
Ключи хранятся в массиве и перемешиваются перед перебором
79%
Элементы хранятся в хэш-таблице, и их порядок зависит от хэш-функции
2%
Это баг, который ещё не исправили