Junior — Middle
Фарқи байни интерфейс дар забони Go ва интерфейсҳо дар дигар забонҳои барномасозӣ чист?
sobes.tech AI
Ҷавоб аз AI
В языке Go интерфейсите се различават по това, че са неявни — типът не е задължен явно да посочва, че реализира интерфейса. Ако типът съдържа всички методи на интерфейса, той автоматично се счита за неговата реализация.
Това се различава от много други езици, където е необходимо явно да се обяви, че клас или тип реализира интерфейс.
Пример:
package main
import "fmt"
type Reader interface {
Read(p []byte) (n int, err error)
}
type File struct {}
func (f File) Read(p []byte) (n int, err error) {
// реализация на метода
return 0, nil
}
func main() {
var r Reader
var f File
r = f // File автоматично реализира Reader
fmt.Println(r)
}