Доступ к переменным структуры из другой переменной вложенных структур в Go - PullRequest
0 голосов
/ 17 февраля 2019

Приведено две структуры, которые я написал.

type DNSPacket struct {
    header      DNSHeader.DNSHeader
    questions   []DNSQuestion.DNSQuestion
    answers     []DNSRecord.DNSRecord
    authorities []DNSRecord.DNSRecord
    resources   []DNSRecord.DNSRecord
}
type DNSHeader struct {
    id uint16 //16bits

    recursion_desired    bool  // 1 bit
    truncated_message    bool  // 1 bit
    authoritative_answer bool  // 1 bit
    opcode               uint8 // 4 bits
    response             bool  // 1 bit

    rescode             ResultCode // 4 bits
    checking_disabled   bool       // 1 bit
    authed_data         bool       // 1 bit
    z                   bool       // 1 bit
    recursion_available bool       // 1 bit

    questions             uint16 // 16 bits
    answers               uint16 // 16 bits
    authoritative_entries uint16 // 16 bits
    resource_entries      uint16 // 16 bits
} // total 96 bits

Теперь, когда я вызываю results.header.questions, где result является переменной типа DNSPacket, я получаю ошибку [go] result.header.questions undefined (cannot refer to unexported field or method questions).

Что я делаю неправильно?Есть ли обходной путь?

Спасибо.

1 Ответ

0 голосов
/ 17 февраля 2019

Здесь есть некоторые проблемы:

  1. Поля обеих ваших структур не экспортируются за пределы пакета, который их содержит, потому что они начинаются со строчной буквы.Если вы хотите получить доступ к полям вне пакета, они должны начинаться с заглавной буквы.
  2. Называйте свои пакеты строчными буквами, например dnsheader, а не DNSHeader.

Прочитайте спецификацию экспортируемые имена и Effective Go on имена пакетов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...