I have a problem using a function when there should not be any problem.
In Go, a Function that starts with a capital letter has a visibility outside the package.
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_)
}
src/grid/Makefile
include $(GOROOT)/src/Make.inc
TARG=grid
GOFILES=\
node.go\
grid.go\
include $(GOROOT)/src/Make.pkg
src/main/Makefile
include $(GOROOT)/src/Make.inc
TARG=main
GOFILES=\
main.go\
include $(GOROOT)/src/Make.cmd
When I compile the grid package, everything goes well, but when I try to compile le main package, it gives me that error message:
manbear@manbearpig:~/Bureau/go_code/main$ gomake
6g -o _go_.6 main.go
main.go:15: undefined: grid.InitGrid
make: *** [_go_.6] Erreur 1
I don’t understand why it gives me that error, I’ve passed some time reading the Go documentation, but I don’t find the reason why it doesn’t work.
Thank you for your help.
You compiled and installed the
gridpackage with just thenode.gosource file. Compile and install thegridpackage with thenode.goandgrid.gosource files. For example,