mixture of field:value and value initializers

165 views
Skip to first unread message

Aln Kapa

unread,
Aug 25, 2015, 8:43:11 AM8/25/15
to Golang Russian
Добрый  день.

Подскажите где косяк.

Вот такой
type EgtsCommand struct {
    CID int64 //идентификатор комманды
    TID int64 //уст-во
    CT  int32 //тип команды
    CMD int32 //команда
}

..........................

err = binary.Write(buffer, binary.LittleEndian, struct {
            EgtsCommand
            PARAM struct {
                ID   int32
                FILE string
            }
        }{*command, PARAM: struct {
            ID   int32
            FILE string
        }{ID: cmd.Adr, FILE: cmd.Dt}})

Aln Kapa

unread,
Aug 25, 2015, 8:45:17 AM8/25/15
to Golang Russian
Извиняюсь:

Подскажите где косяк.

Вот такой код:
 
type EgtsCommand struct {
    CID int64 //идентификатор комманды
    TID int64 //уст-во
    CT  int32 //тип команды
    CMD int32 //команда
}

..........................

err = binary.Write(buffer, binary.LittleEndian, struct {
            EgtsCommand
            PARAM struct {
                ID   int32
                FILE string
            }
        }{*command, PARAM: struct { --- тут ругается "mixture of field:value and value initializers"

Eugene Toropov

unread,
Aug 25, 2015, 8:46:46 AM8/25/15
to gola...@googlegroups.com
Покажите на http://play.golang.org/

--
Вы получили это сообщение, поскольку подписаны на группу "Golang Russian".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес golang-ru+...@googlegroups.com.
Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.

Айнар Гарипов

unread,
Aug 25, 2015, 8:54:06 AM8/25/15
to Golang Russian
Смешивать именованный (T{A:1, B: 2}) и неименованный (T{1, 2}) стиль при инициализации структур нельзя.

}{*command, PARAM: struct {

замените на

}{EgtsCommand: *command, PARAM: struct {

Aln Kapa

unread,
Aug 25, 2015, 11:02:53 AM8/25/15
to Golang Russian
Спасибо.  Заработало.

А как быть если структура объявлена в другом файле.  Вываливается такая ошибка:
unknown struct { proto.EgtsCommand; PARAM string } field 'proto.EgtsCommand' in struct literal


вторник, 25 августа 2015 г., 15:54:06 UTC+3 пользователь Айнар Гарипов написал:

Айнар Гарипов

unread,
Aug 25, 2015, 11:10:59 AM8/25/15
to Golang Russian
Название модуля не включается в название поля. Так что

EgtsCommand: *command,

, а не

proto.EgtsCommand: *command,

Aln Kapa

unread,
Aug 25, 2015, 11:31:26 AM8/25/15
to Golang Russian
        err = binary.Write(buffer, binary.LittleEndian, struct {
            proto.EgtsCommand

            PARAM struct {
                ID   int32
                FILE string
            }
        }{proto.EgtsCommand: command, PARAM: struct { <-- тут ругается "unknown struct { proto.EgtsCommand; PARAM struct { ID int32; FILE string } } field 'proto.EgtsCommand' in struct literal"

            ID   int32
            FILE string
        }{ID: cmd.Adr, FILE: cmd.Dt}})
        if err != nil {
            return
        }


Айнар Гарипов

unread,
Aug 25, 2015, 11:59:49 AM8/25/15
to Golang Russian
Я только что на это ответил. Прочитайте моё предыдущее сообщение внимательно.

Aln Kapa

unread,
Aug 25, 2015, 12:10:10 PM8/25/15
to gola...@googlegroups.com
Упс.   извиняюсь, не увидел.
Спасибо.

Reply all
Reply to author
Forward
0 new messages