Witam!
Ostatnio zainteresowałem się językiem Go. Jest strasznie łatwy toteż szybko nauczyłem się w nim dłubać. Jednak mam problem, bo chcę budować projekt z różnych plików, a nie z jednego. Niby Go na to pozwala, ale same problemy z tym. Wzorując się na tym poradniku stworzyłem trzy proste skrypty. Pierwszy do tworzenia projektu, drugi do uzupełniania go o pakiety, a trzeci do tworzenia sample plików w folderach. Kompilacja pakietów działa bez zarzutów i sam plik main.go też się kompiluje (oczywiście bez importowania pakietów). Skompilowałem pakiet testowy i w main.go uzupełniłem linijkę o ten jeden import. Z tego co widać, to program go importuje, ale nie potrafi użyć w programie. Mówi, że nie może odwołać się do nie exportowanej nazwy, ale ona powinna być exportowana. Nwm już co z tym zrobić, a strasznie chcę w nim programować. Wie ktoś gdzie popełniam błąd? Poniżej skrypty i kod:
main.go
package main
import (
"fmt"
testPackage "testPackage"
)
func main() {
result := testPackage.retString()
//fmt.Println(result)
fmt.Println("TEST")
}
testPackage.go
package testPackage
func retString() string {
return string("Hi World!")
}
skrypty:
goCreate (tworzy projekt):
@echo off
if %1.==. goto :errorProjectName
set goProjectsDir=D:\Dane\Projekty\Go
set projectPath=%goProjectsDir%\%1Code
mkdir %projectPath%
set GOPATH=%projectPath%
cd /d %projectPath%
mkdir %projectPath%\src
cd %projectPath%\src
mkdir %1
cd %1
createGoFile.bat main
exit /b
:errorProjectName
echo You didn't type project name.
exit /b
goPackage (tworzy pakiet):
@echo off
if %1.==. goto :errorPackageName
set packagePath=%GOPATH%\src\%1
mkdir %packagePath%
cd %packagePath%
createGoFile.bat %1
exit /b
:errorPackageName
echo You didn't type package name.
exit /b
createGoFile (tworzy sample plik):
if %1.go.==. goto :errorFileName
echo package %1 >>%1.go
echo. >>%1.go
echo import "fmt">>%1.go
echo. >>%1.go
echo func main() {>>%1.go
echo fmt.Println("Hello World\n")>>%1.go
echo }>>%1.go
exit /b
:errorFileName
echo You didn't type file name.
exit /b
console output: <- folder z main.go (src/Test). Pakiet jest w (src/testPackage)
> go install
# Test
.\main.go:9: cannot refer to unexported name testPackage.retString
.\main.go:9: undefined: testPackage.retString