Importowanie lokalnego pakietu - prosty przykład

0

Mam następującą strukturę plików i katalogów kodu źródłowego:

└───workspace
    ├───main.go
    └───mypkg
         └───mypkg.go

main.go - program główny
mypkg\mypkg.go - lokalny pakiet

mypkg.go:

package mypkg

import "fmt"

func hello() {
	fmt.Println("Hello, World!")
}

main.go:

package main

import "workspace/mypkg"

func main() {
	mypkg.hello()
}

Chcę zaimportować lokalny pakiet mypkg według instrukcji na stronie linuxhint.com/golang-import-local-package

W katalogu workspace wykonuję polecenie:
go mod init workspace
Powstaje plik go.mod:

module workspace

go 1.19

Następnie wykonuję polecenie:
go build
i wywala błąd:

# workspace
.\main.go:7:8: undefined: mypkg.hello

Teoretycznie widzi lokalny pakiet, bo jak w main.go wpiszę import "workspace/aaa", to mam inny komunikat:

main.go:3:8: package workspace/aaa is not in GOROOT

Tak jakby nie widział funkcji hello(). Co robię nie tak?

1

https://yourbasic.org/golang/public-private/

Nazwa funkcji hello powinna zaczynać się wielką literą

func Hello() {
  // 
}

i w main.go

func main() {
	mypkg.Hello()
}
0
Xarviel napisał(a):

https://yourbasic.org/golang/public-private/

Nazwa funkcji hello powinna zaczynać się wielką literą

Dzięki. Wiedziałem, że to będzie jakaś drobnostka.
Języka Go uczę się od kilku dni. Czy każda funkcja powinna być z wielkiej litery?

1
phaxe napisał(a):

Czy każda funkcja powinna być z wielkiej litery?

Można powiedzieć, że jest to taki odpowiednik słówka private / public z innych języków.

Pliki znajdujące się w tym samym pakiecie mają dostęp do wszystkiego, natomiast jak coś eksportujesz poza pakiet to musi być z dużej litery.

1 użytkowników online, w tym zalogowanych: 0, gości: 1