Sobes.tech
Junior — Middle

Оё метавонед шарҳи кунед, ки интерфейси Comparable чист ва чӣ гуна истифода мешавад?

sobes.tech AI

Ҷавоб аз AI

Дар Go, интерфейс Comparable ҳамчун интерфейси стандартии алоҳида вуҷуд надорад, аммо забон имконияти дарунсохт барои муқоиса кардани арзишҳоро бо истифода аз операторҳои == ва != барои намудҳое, ки муқоисаҳоро дастгирӣ мекунанд, дорад.

Аммо, агар мо дар бораи интерфейсе гап занем, ки як усули муқоиса кардани объектҳоро муайян мекунад, одатан интерфейси махсус месозанд, масалан:

// Интерфейс Comparable бо усули Compare
// Агар объекти ҳозира аз дигар хурдтар бошад, рақами манфӣ бармегардонад,
// 0 агар баробар бошанд, ва мусбат агар калонтар бошад.
type Comparable interface {
    Compare(other interface{}) int
}

Интерфейс имкон медиҳад, ки объектҳои намудҳои гуногунро ба тартиб дарорем ё муқоиса кунем.

Маслиҳат барои истифода:

type IntWrapper int

func (a IntWrapper) Compare(b interface{}) int {
    other := b.(IntWrapper)
    if a < other {
        return -1
    } else if a > other {
        return 1
    }
    return 0
}

Бинобар ин, интерфейси Comparable шартномаест, ки талаб мекунад, ки усули муқоиса иҷро шавад, то объектҳоро ба тартиб дарорем ё муқоиса кунем.