Go возвращает значения разных типов в методах

У меня есть структура, и я привязал к ней некоторые методы. Мне нужно иметь что-то вроде этого:

func Start() (*MyStruct or empty struct{}, error)

Как я могу этого добиться? Как мы поступаем с функциями, которые могут возвращать значения разных типов в GoLang? Извините за глупый вопрос. Много искал о дженериках, но ничего не нашел о них в методах... Я понимаю, как мы имеем дело с простыми функциями и дженериками, но как насчет методов? Пожалуйста помоги! Вот более широкий пример:
https://play.golang.com/p/7kPHEVC_G3-

Какова цель возврата пустой структуры? Просто вернись nil

blackgreen 09.04.2022 18:11
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
0
1
51
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Как я вижу, вы хотите вернуть пустую структуру только при ошибках. Идиоматический способ - вернуть nil и error, а не пустую структуру, например:

func Test() (*CustomStruct, error) {
    cs := &CustomStruct{}
    ...
    err := DoSomething()
    if err != nil {
        return nil, err
    }
    ...
    return cs, nil
}

Кроме того, если вы используете VS Code с расширением Go, у вас будет шаблон по умолчанию iferr, чтобы упростить ввод. Просто введите iferr и нажмите TAB.

Другие вопросы по теме