Я недавно играл с языком Go и столкнулся с чем-то немного странным, если не сказать больше, давайте рассмотрим очень простую функцию:
func main() {
n, e := fmt.Println(`He said: "Hello"`)
fmt.Printf("%T\n", n)
}
, которая выводит то, что я ожидал:
He said: "Hello"
int
Теперь, если я хочу отобразить тип e
:
func main() {
n, e := fmt.Println(`He said: "Hello"`)
fmt.Printf("%T\n", e)
}
, и на этот раз выдается:
He said: "Hello"
<nil>
Я получаю часть, которая естьнет ошибки, поэтому e
- пустой указатель: nil
, но я не ожидал, что сам по себе ~~ type ~~.
Почему я не получаюфактический тип?
Если это так, есть ли обходной путь?(я не говорю, что мой вариант использования реалистичен, но любопытно, есть ли такая возможность)