Чӣ гуна робита байни интерфейси холӣ ва интерфейси оддӣ дар барномасозӣ вуҷуд дорад?
sobes.tech AI
Ҷавоб аз AI
Дар Go, холест интерфейс interface{} — ин интерфейс, ки ягон метод надорад. Он метавонад арзиши ҳар гуна навъро нигоҳ дорад, зеро ҳама навъҳо ба таври худкор интерфейси холро иҷро мекунанд. Интерфейси оддӣ, баръакс, маҷмӯи методҳоро муайян мекунад, ки навъ бояд барои мувофиқат ба он иҷро кунад.
Бинобар ин, муносибат байни интерфейси хол ва оддӣ дар Go дар он аст, ки интерфейси хол контейнери умумиҷаҳонӣ барои арзишҳои ҳар гуна навъ аст, дар ҳоле ки интерфейси оддӣ шартномаеро муайян мекунад, ки навъҳои мушаххас бояд риоя кунанд. Интерфейси хол одатан барои нигоҳ доштани ва интиқоли маълумотҳо бе навъи мушаххас истифода мешавад, дар ҳоле ки интерфейси оддӣ барои муайян кардани рафтори объектҳо истифода мешавад.
Масалан:
var any interface{} = 42 // интерфейси хол метавонад ҳар арзишро нигоҳ дорад
// Интерфейси оддӣ
type Reader interface {
Read(p []byte) (n int, err error)
}
// Навъ, ки Reader-ро иҷро мекунад
type File struct {}
func (f File) Read(p []byte) (int, error) {
// иҷроиш
return 0, nil
}
var r Reader = File{} // File интерфейси Reader-ро иҷро мекунад