2015-08-01 3 views
0

Я хотел бы читать, извлечения и сохранения данных из различных источников с чтения и записи методы, реализованные в интерфейсе Process Код работает Rigth в первом example:golang создать динамически приемник внутри переключатель

type Process interface { 
    Read() 
    write() string 
} 

type Nc struct { 
    data string 
} 

type Ctd Nc 
type Btl Nc 

func (nc *Ctd) Read() { 
    nc.data = "CTD" 
} 
func (nc *Ctd) Write() string { 
    return nc.data 
} 
func (nc *Btl) Read() { 
    nc.data = "BTL" 
} 
func (nc *Btl) Write() string { 
    return nc.data 
} 

func main() { 
    var ctd = new(Ctd) 
    var btl= new(Btl) 
    ctd.Read() 
    btl.Read() 
    fmt.Println(ctd.Write()) 
    fmt.Println(btl.Write()) 
} 

Теперь я хотел бы динамически считывать данные из файлов, методов Get_Config должен возвращать постоянный тип, который я хотел бы процесс в switch блоке, как:

func main() { 
    // bitMask = get_config() 
    bitMask := 1 
    // or bitmask := 2 
    var nc = new(Nc) 
    switch bitMask { 
    case 1: 
     nc = Ctd(nc) 
    case 2: 
     nc = Btl(nc) 
    } 
    nc.Read() 
    fmt.Println(nc.Write()) 
} 

Я не знаю, как объявить н.д. с Rigth впечатать боковой переключатель блока

Спасибо,

ответ

0

В интерфейсе метод write в нижнем регистре, так что является частным. И структуры Ctd и Btl не реализуют этот интерфейс, поскольку они имеют верхний регистр Write.

Итак:

type Process interface { 
    Read() 
    Write() string 
} 

.... 

func main() { 
    bitMask := 2 
    // or bitMask := 2 
    var nc Process 
    switch bitMask { 
    case 1: 
    nc = &Ctd{} 
    case 2: 
    nc = &Btl{} 
    } 
    nc.Read() 
    fmt.Println(nc.Write()) 
} 

http://play.golang.org/p/IORCIY4z6B

 Смежные вопросы

  • Нет связанных вопросов^_^