Back to questions
Junior — Middle
84
Чем отличается интерфейс в языке Go и какие его особенности следует знать?
Answer from AI
sobes.tech AI
В языке Go интерфейс — это набор методов, которые должен реализовать тип, чтобы считаться соответствующим этому интерфейсу. Особенности интерфейсов в Go:
- Неявная реализация: тип считается реализующим интерфейс, если у него есть все методы интерфейса, без явного указания.
- Интерфейсы описывают поведение, а не структуру данных.
- Пустой интерфейс (
interface{}) — интерфейс без методов, который может содержать значение любого типа. - Интерфейсы могут быть вложенными, объединяя методы нескольких интерфейсов.
Пример:
package main
import "fmt"
type Reader interface {
Read(p []byte) (n int, err error)
}
type MyReader struct {}
func (r MyReader) Read(p []byte) (n int, err error) {
// реализация чтения
return 0, nil
}
func main() {
var r Reader = MyReader{} // MyReader неявно реализует Reader
fmt.Println(r)
}