Back to questions
Junior — Middle
84
Какое отличие у интерфейсов в Golang по сравнению с аналогами в других языках программирования?
Companies where asked
Кадровое агентство BWG
Answer from AI
sobes.tech AI
В Go интерфейсы реализуются по принципу неявной реализации (implicit implementation). Это значит, что тип автоматически реализует интерфейс, если у него есть все методы, которые интерфейс требует, без необходимости явно указывать это в коде (в отличие от Java или C#, где нужно явно объявлять реализацию интерфейса).
Это позволяет писать более гибкий и менее связанный код, так как типы и интерфейсы не зависят друг от друга напрямую.
Пример:
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{} // неявная реализация интерфейса
fmt.Println(r)
}
Также в Go нет наследования классов, интерфейсы используются для полиморфизма и композиции, что отличает их от многих других языков.