Alexander
Пусть ошибку проверяет, нефиг
der ðiβüśüɾę
Но var heightOfPass int = strconv.Atoi(os.Args[1]) не работает
der ðiβüśüɾę
Почему?
Alexander
Потому что 2 значения возвращает
der ðiβüśüɾę
Ну да
der ðiβüśüɾę
А почему 2?
Alexander
Потому что может произойти ошибка
der ðiβüśüɾę
Т.е. надо err обробатывать?..
Alexander
Да
der ðiβüśüɾę
Я новенький в go, кстати. И не могли бы Вы подсказать, как обрабатывать ошибку на понятном языке. Просто я с плюсов пришёл)
Alexander
1. Если для себя пишешь или оно в мейне, то можешь просто: if err != nil{ panic(err) }
Alexander
2. Иначе твоя функция/метод должны также возвращать и ошибку помимо основного значения. Основное значение считается невалидным, если err != nil
der ðiβüśüɾę
А можно же _, как сказал Максим
Alexander
дальше уже на более высоких уровнях проверяешь и вываливаешь на самом высоком юзеру
Alexander
ну можно, потом гадай где у тебя ошибка при таком методе написания кода ;)
der ðiβüśüɾę
heightOfPass, _ := strconv.Atoi(os.Args[1]) выводят 1 B
der ðiβüśüɾę
Хм..
der ðiβüśüɾę
Почему?
Maks
а какие аргументы запуска?
der ðiβüśüɾę
1
Alexander
Т.е. произвольный текст определённой ошибки?
ты можешь как ту самую err возвращать. но круче если из этого пакета заюзаешь Wrap, так можешь своего контекста добавить: https://pkg.go.dev/github.com/pkg/errors
Maks
покажи листинг кода
Alexander
heightOfPass, _ := strconv.Atoi(os.Args[1]) выводят 1 B
ну как бы ошибку не проверяешь, смысла дальше отвечать нет ;)
der ðiβüśüɾę
покажи листинг кода
Кхм... Листинг?..
Maks
ну код
Maks
весь
der ðiβüśüɾę
А, хорошо
der ðiβüśüɾę
package main import ( "fmt" "math/rand" "os" "strconv" ) func RandomString(n int) string { var letters = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789") s := make([]rune, n) for i := range s { s[i] = letters[rand.Intn(len(letters))] } return string(s) } func main() { //args := os.Args[1] //fmt.Println(args) heightOfPass, _ := strconv.Atoi(os.Args[1]) fmt.Println(heightOfPass) fmt.Println(RandomString(heightOfPass)) }
der ðiβüśüɾę
Немного, поэтому так
Maks
ну так а в чем тогда твой вопрос?) Почему так
Maks
Ты запускаешь программу, передаешь ей аргументы, еденицу
Maks
он выводит ее
Maks
потом выводит значение которое возвращает твоя функция рандом стринг
Maks
ты какой вывод ожидаешь?
der ðiβüśüɾę
ты какой вывод ожидаешь?
Да-да, я запутался слегка
der ðiβüśüɾę
Кхе, собрал приложение... Вот такое вижу..
Maks
у тебя там значит функция сортировки не правильно работает
der ðiβüśüɾę
Скорее всего
Maks
там кстати цикл можно написать for n > 0 { s[le(s)-n] = рандомный символ) n-- }
der ðiβüśüɾę
Я понял что это "говнокод" и есть пакет math/rand
Maks
да, с ним разберись
Maks
там есть наглядный пример вроде как рандом получить
der ðiβüśüɾę
да, с ним разберись
Я увидел на доках статью
A
Всем доброго времени суток, у меня вот такой вопрос зародился в котелке.
A
Допустим выучу я го(он сравнительно легок, + все таки относится к си-подобным языкам, что тоже радует. Где работать? Вебсайты кляпать не люблю.(на html с css аллергия, хоть код и читаю).
Maks
Веб сервисы и бэкенд
Maks
Ну или консольные прилы
Maks
Докер например
Maks
Демон докера это сервер, cli шлет запросы в локалхост на нужный порт)
A
Ок, буду учить докер и кубернетис, спасибо
Emil
Мне кажется, это был посыл не к тому, но докер в любом случае полезный ... Пойду смотреть код докера) У клиента докера есть докерфайл отказывается
der ðiβüśüɾę
Ещё раз привет, решил покрасноглазить и скомпилировать файл .go из-под android ( termux ) в .exe. Как это возможно сделать?
Maks
Флаги компиляции мейби но я не уверен, я не гошник)
der ðiβüśüɾę
GOOS и GOARCH переменные установи.
С какими именно значениями?
der ðiβüśüɾę
windows
У двух переменных?
🔥
У двух переменных?
Чтоб список посмотреть вот команда go tool dist list | column -c 75 | column -t
🔥
У двух переменных?
$GOOS $GOARCH aix ppc64 android 386 android amd64 android arm android arm64 darwin amd64 darwin arm64 dragonfly amd64 freebsd 386 freebsd amd64 freebsd arm illumos amd64 ios arm64 js wasm linux 386 linux amd64 linux arm linux arm64 linux ppc64 linux ppc64le linux mips linux mipsle linux mips64 linux mips64le linux riscv64 linux s390x netbsd 386 netbsd amd64 netbsd arm openbsd 386 openbsd amd64 openbsd arm openbsd arm64 plan9 386 plan9 amd64 plan9 arm solaris amd64 windows 386 windows amd64 windows arm windows arm64
der ðiβüśüɾę
Или в обеих переменных windows/386?
der ðiβüśüɾę
Получается так)
А да, сейчас попробую
🔥
А да, сейчас попробую
А в чем прикол все это на телефоне делать?)
der ðiβüśüɾę
А в чем прикол все это на телефоне делать?)
Просто с ноутбуком проблемки
der ðiβüśüɾę
Урааа, сработало
der ðiβüśüɾę
И ещё раз всем привет. Тут возникла трудность: как приделать таймер ( секундомер ), чтобы он считал за сколько программа выполнилась, желательно в секундах и миллисекундах.
Maxim
Примерная конструкция
Emil
Что-то:=time.now() в начале и потом time.since(что-то).seconds() В последнем не уверен, на угад, только секунды покажет наверное
der ðiβüśüɾę
Хм.. Никто не знает, как проверять есть ли в os.Args элемент 1? Попытался сделать if os.Args[1] = NULL{ fmt.Println("Where is arg[1]") panic(err) } Но не работает(
Alexander
len(os.Args)
🔥
Хм.. Никто не знает, как проверять есть ли в os.Args элемент 1? Попытался сделать if os.Args[1] = NULL{ fmt.Println("Where is arg[1]") panic(err) } Но не работает(
В го нет NULL тут nil, а слайс это структ с поинтером до данных и информацией о длине и вместимости. В твоем случае хватит len(os.Args) <= 0 для проверки слайса