170 похожих чатов

А если в го функция возвращает два значения, можно ли

на выходе как-то сразу привести возвращаемый интерфейс к типу?
func sample() (interface{}, error) {
return interface{}, nil
}

var response = sample().(string)

пытался в такой способ, но он работает только в том случае, если функция возвращает 1 лишь объект

2 ответов

10 просмотров

Если два значения, то привести к нужному типу сразу нельзя. Игнорировать ошибки - плохо. Но если у вас, например, вызов функции от какого либо константного значения и точно не будет ошибки, то можно сделать функцию обертку, которая будет возвращать только нужную вам переменную, но лучше этого избежать. Паника происходит не от приведения к типу, а от дальнейшего использования переменной, без проверки на успех приведения или без проверки на nil. При приведения типа, может быть возвращено одно или два значения, если добавить вторую переменную для получения значения, например так: response, ok := sample().(string) То в переменной ok будет true, если приведение удалось Вот пример по вашим вопросам: https://play.golang.org/p/rL2DW05qKS-

Нельзя. Можешь сделать Cast(v interface{}, err error) (string, error) { return v.(string), err } response, _ := Cast(Sample())

Похожие вопросы

Обсуждают сегодня

Коллеги, я тут для личных нужд пошел ставить MQTT сервер, пощупал mosquitto, но ужаснулся отсутствию такой банальности, как HTTP API для посмотреть список топиков. А тут что,...
Maksim Lapshin
13
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
#include <stdio.h> #include <stdlib.h> #include <time.h> void mass_first_generate(int mass[5][7]) {     for (int N = 0; N < 5; N++) {         for (int A = 0; A < 7; A++) {   ...
Чувак
6
Всем привет! Решаю 99 OCaml Problems и столкнулся со следующей проблемой (прошу палками не забивать, я OCaml практически не трогал до этого момента): open OUnit2 let create_...
К|/|pи/\/\ 6е3yглbIи
2
Ну вот просто даже давайте вот как. Какой нибудь конкретный кейс, можете в пример привести, где бч работает и приносит прикладную пользу, а не просто что бы было? Не крипту.
Alexander Andreev
22
https://www.linkedin.com/posts/ugama-benedicta-kelechi-codergirl-103041300_mobiledevelopment-fluttertraining-handsonlearning-activity-7263445699227254784-IdHB?utm_source=share...
CoderGirl
16
возможно ли как-то передать в электрон или таури медиа поток с рендера 2д движка? двиг запускается как dll, а дальше надо как-то отправлять рендер кодировать не подходит, зр...
Kyle Nekto
7
Точно, оно. У тебя там имена потоков выставляются?
Александр (Rouse_) Багель
11
Помогите пожалуйста. Делаю систему плагинов. Проблема сейчас в такая: плагины загружаются в основном потоке. FLibHandle := SafeLoadLibrary(FFileName) Но нужно еще выполнить фу...
Илья 🤣
10
объясните пожалуйста, почему функция не работает должным образом? вроде должно брать активное окно сравнивать его размер с размером экрана, и если есть совпадение = true прове...
JF
12
Карта сайта