Описание include импортирует все типы, функции и константы из указанных файлов и их дочерних файлов включенных с помощью include.
Описание import импортирует только публичные типы, функции и константы из указанных файлов и их дочерних файлов включенных с помощью include. Публичные объекты определяются с помощью ключевого слова pub.
stringConst = "`" { unicode_char } "`" | stringDoubleConststringDoubleConst = `"` { unicode_char | uShort | uLong | escapedChar | byteVal } `"`importDecl = "import" "{" {stringConst newline} "}"includeDecl = "include" "{" {stringConst newline} "}"
Рассмотрим видимость объектов в виде таблицы. Пусть имеется два файла.
// a.g can include or import b.gfunc afunc(i int) : return i*2pub func apubfunc(i int) : return i*3// b.gfunc bfunc(i int) : return i*4pub func bpubfunc(i int) : return i*5
Пусть файл c.g может импортировать или включать файл a.g. Вы можете видеть какие функции будут видимы в файле c.g в зависимости от различных ситуаций.
| include a a includes b | include a a imports b | import a a includes b | import a a imports b |
afunc | visible | visible | | |
apubfunc | visible | visible | visible | visible |
bfunc | visible | | | |
bpubfunc | visible | | visible | |
Команда pub определяет следующую функцию, тип или константы как публичные. Вы можете импортировать их с помощью команды import.
pubDecl = "pub" [newline]objects = [pubDecl] (structDecl | FnDecl | ConstDecl | FunctionDecl)
Ключевое слово pub указывает, что следующая функция, константы или тип будут передаваться в случае импорта файла.
pub const IOTA { // public constants. Visible when include or importMY1MY2}const IOTA*2 { // private constants. Visible only when includeMY3MY4}