утилиту командной строки можно передать конкретный ip4 или путь к конфигу в котором хранится список ip4. Утилита должна реагировать на это по-разному: в случае с передачей ip сделать одно действие, в случае с строкой пути — другое. Это просто реализовать через if, но для практики хочу попробовать через замену if`а полиморфизмом.
Структуры и интерфейс создал:
type ArgIP struct {
IP net.IP
}
type ArgConfig struct {
Path string
}
type Arger interface {
ParseArg(arg string) error
}
по идее в методах я должен реализовать логику для разных структур? А os.Args[1] передавать в переменную с типом Arger? Или как решить задачу правильно?
Честно говоря не вижу тут место абстрактному прогаммированию. Это две разные абсолютно задачи.
Ну сделай type Adresser interface { Address() []net.IP }
type ArgIP struct { IP net.IP } type ArgConfig struct { Path string } type Arger interface { ParseArg(arg string) error } func (ip ArgIP) ParseArg(arg string) error { // работаю с конкретным ip return nil } func (config ArgConfig) ParseArg(arg string) error { // работаю о списком ip return nil } верно?
@pragus правильно мыслю?
Обсуждают сегодня