Golang packages: Difference between revisions

From wikinotes
No edit summary
Line 10: Line 10:
</syntaxhighlight>
</syntaxhighlight>
</blockquote><!-- Imports -->
</blockquote><!-- Imports -->
= Defining Packages =
<blockquote>
<syntaxhighlight lang="bash">
# project heirarchy
myproject/
    mypackage/
        libfoo.go
        libbar.go
    main.go
    go.mod
</syntaxhighlight>
{{ expand
| <code>myproject/go.mod</code>
|
<syntaxhighlight lang="go">
// go.mod
module github.com/you/myproject
go 1.18
</syntaxhighlight>
}}
{{ expand
| <code>myproject/main.go</code>
|
<syntaxhighlight lang="go">
// main.go
package main
import "github.com/you/myproject/mypackage"
func main() {
    mypackage.PrintHi();
}
</syntaxhighlight>
}}
{{ expand
| <code>myproject/mypackage/libfoo.go</code>
|
<syntaxhighlight lang="go">
// mypackage/libfoo.go
package mypackage
import "fmt"
func PrintHi() {
    fmt.Println("hi")
}
</syntaxhighlight>
}}
</blockquote><!-- Defining Packages -->

Revision as of 19:56, 23 May 2022

Imports

import "fmt"

import (
    "fmt"                                // builtin pkgs have no module-path prefix
    "golang.org/x/example/stringutil"    // third-party pkgs have module-path prefix
)

Defining Packages

# project heirarchy
myproject/
    mypackage/
        libfoo.go
        libbar.go
    main.go
    go.mod

myproject/go.mod

// go.mod

module github.com/you/myproject

go 1.18

myproject/main.go

// main.go

package main

import "github.com/you/myproject/mypackage"

func main() {
    mypackage.PrintHi();
}

myproject/mypackage/libfoo.go

// mypackage/libfoo.go

package mypackage

import "fmt"

func PrintHi() {
    fmt.Println("hi")
}