Перейти неопределенная импортированная функция - PullRequest
1 голос
/ 31 августа 2011

У меня проблема с использованием функции, когда не должно быть никаких проблем. В Go функция, которая начинается с заглавной буквы, видна за пределами пакета.


node.go

package grid  

type Node struct {  
    id uint  
    name string  
    pos_i uint  
    pos_j uint  
    node_type string  
}

grid.go

package grid

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    the Grid Structure
____________________________________________________________________________
*/
type Grid struct {
    // The numbers of divisions in the Grid
    number_lines uint
    number_columns uint 

    // The Sizes of the Grid
    width uint
    height uint

    // An Array of the Nodes
    nodes []Node
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Initialize the Grid
____________________________________________________________________________
*/
func InitGrid() *Grid {
    g := new(Grid)

    g.number_lines = 4
    g.number_columns = 4

    g.width = 400
    g.height = 400

    return g
}

main.go

package main

import (
    "fmt"
    "grid"
)

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Entry Point of the Application
____________________________________________________________________________
*/
func main() {
    grid_ := grid.InitGrid()
    fmt.Println(grid_)    
}

ЦСИ / сетка / Makefile

include $(GOROOT)/src/Make.inc

TARG=grid

GOFILES=\
    node.go\
    grid.go\

include $(GOROOT)/src/Make.pkg

SRC / главная / Makefile

include $(GOROOT)/src/Make.inc

TARG=main

GOFILES=\
    main.go\

include $(GOROOT)/src/Make.cmd

Когда я компилирую пакет grid, все идет хорошо, но когда я пытаюсь скомпилировать пакет main, он выдает мне сообщение об ошибке:

manbear@manbearpig:~/Bureau/go_code/main$ gomake  
6g  -o _go_.6 main.go  
main.go:15: undefined: grid.InitGrid  
make: *** [_go_.6] Erreur 1  

Я не понимаю, почему это дает мне такую ​​ошибку, я потратил некоторое время на чтение документации Go, но я не могу найти причину, почему она не работает.

Спасибо за вашу помощь.

1 Ответ

1 голос
/ 31 августа 2011

Вы скомпилировали и установили пакет grid только с исходным файлом node.go.Скомпилируйте и установите пакет grid с исходными файлами node.go и grid.go.Например,

include $(GOROOT)/src/Make.inc

TARG=grid
GOFILES=\
    grid.go\
    node.go\

include $(GOROOT)/src/Make.pkg
...