2016-12-14 2 views
1

Есть ли эквивалент в Golang для повышения NotImplementedException в Python, когда вы определяете интерфейс с методами, которые вы еще не хотите реализовать? Это идиоматический Голанг?Golang эквивалент Python's NotImplementedException

Например:

type MyInterface interface { 
    Method1() bool 
    Method2() bool 
} 


// Implement this interface 
type Thing struct {} 
func (t *Thing) Method1() bool { 
    return true 
} 

func (t *Thing) Method2() bool { 
    // I don't want to implement this yet 
} 
+3

Важна ли это идиоматическое? Если это поможет вам, панику или журнал, этого должно быть достаточно. – coredump

+1

Не обязательно важно, но я все еще изучаю Go и хочу понять правильные способы его использования. – Alex

+1

Я чувствую, что нет правильного ответа на этот вопрос. Интерфейсы реализуются неявно, поэтому, если вы создали интерфейс в этом случае, вам следует просто изменить его или разделить на два отдельных интерфейса. Если вы этого не сделали, вам, вероятно, следует прочитать документацию и выяснить, как работает какой-либо интерфейс, и когда будет вызываться метод «Method2» (например, если это закрытый файл, и у вас нет файла для закрытия, вы можете просто ничего не делать и возвращать успех). Короче говоря, настоятельно рекомендуем вам дать больше информации, чтобы получить лучший ответ. – fstanis

ответ

2

Обычно в golang, если вы хотите реализовать обработку ошибок вы возвращаете ошибку

type MyInterface interface { 
    Method1() bool 
    Method2() (bool, error) 
} 

Затем вы можете вернуть ошибку. Вы также можете регистрировать или паниковать, как сказано в комментариях @coredump.

0

Пустой вар будет делать это

var _ MyInterface = &Thing{} 

если Thing не реализует интерфейс MyInterface, компилировать потерпит неудачу

Смежные вопросы