2016-02-22 4 views
0

Вот моя проблема noobish. Я имею эту структуру в моем models/model.goИмпортированная структура из другого пакета не определена

package models 

    import (
     "time" 
     "gopkg.in/mgo.v2/bson" 

    ) 

    type Horse struct { 
     Id bson.ObjectId `bson:"_id,omitempty"` 
     Title  string 
     Description string 
     CreatedOn time.Time 
     Creator  string 
     Visits int 
     Score  int 

    } 

И в моем controllers/crud.go я пытаюсь использовать Horse STRUCT

package controllers 

import (
    "html/template" 
    "log" 
    "net/http" 
    "horseapp/models" 
) 
[...] 
var horseStore = make(map[string]Horse) //This raises undefined error 

Но я получаю undefined: Horse когда я go install horseapp.

Что здесь не так и как это исправить?

+3

вы имели в виду 'models.Horse'? – muru

ответ

2

Использование

var horseStore = make(map[string]models.Horse) 

При обращении идентификатор из другого пакета, который вы всегда будете иметь префикс его с именем пакетов и точкой: package.Identifier

+0

Вы правы. Спасибо за совет. Кстати, есть ли способ использовать голый «Лошадь» в импортированном файле, чтобы не добавлять к нему «models.'» каждый раз? – Karlom

+0

Только в том случае, если они находятся в одном пакете. Но я вижу, что вы группируете свои материалы по функциональности (т. Е. Контроллеры входят в контроллеры пакетов, модели в модели пакетов и т. Д.). Почему бы не группировать по характеристикам? Итак, «Лошадь» и ваш конный контроллер находятся в пакете «Лошадь»? – Danilo

+2

@Karlom: вы можете использовать имя импорта '.', Чтобы привести все идентификаторы в одно и то же пространство имен, но не делайте этого - обычно считается плохой практикой. – JimB

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