Моим личным фаворитом будет g(f()[1])
, но это тоже невозможно.
Текущее решение, используемое стандартной библиотекой, заключается в написании простых вспомогательных функций, которые отбрасывают нежелательные возвращаемые значения. Например, взгляните на пакет template .
Многие функции возвращают кортеж (*Template, os.Error)
, но есть помощник по имени template.Must()
, который возвращает *Template
и вызывает панику, если ошибка не равна нулю.
В качестве альтернативы может помочь общая вспомогательная функция, такая как func extract(index int, values ...interface{}) interface{}
. Но поскольку нет поддержки дженериков, я бы не стал писать что-то подобное.