Golang anatomy: Difference between revisions

From wikinotes
No edit summary
Line 66: Line 66:
</blockquote><!-- Project Structure -->
</blockquote><!-- Project Structure -->


= Documentation =
= Tools =
<blockquote>
<blockquote>
<syntaxhighlight lang="go">
<syntaxhighlight lang="bash">
go doc io
# documentation
</syntaxhighlight>
go doc io       # functions/constants on 'io'
</blockquote><!-- Documentation -->
go doc io.File  # methods on 'io.File'


= Build =
<blockquote>
<syntaxhighlight lang="bash">
# build/run main package
# build/run main package
go run .
go run .
Line 86: Line 83:
go install
go install
</syntaxhighlight>
</syntaxhighlight>
</blockquote><!-- Buidl -->
</blockquote><!-- Tools -->

Revision as of 01:33, 21 June 2022

This page is a general getting started in go.

Project Structure

myproject/
  go.mod                   # module name, requirements
  main.go                  # optional CLI entrypoint
  printer.go               # other 'main' package src are in toplevel dir

  internal/                # exported symbols from internal packages are only exposed within 'myproject'
    logger/                # subpackage
      logger.go
    math/                  # subpackage
      division.go
      multiplication.go

myproject/go.mod

// myproject/go.mod

module example.com/x/myproject

go 1.18

myproject/main.go

// myproject/main.go

package main

import (
    "fmt"
    "example.com/x/myproject/internal/logger"
)

func main() {
    logger.Info.Println("a log statement")
    fmt.Println("hello world")
}

myproject/internal/logger/logger.go

// myproject/internal/logger/logger.go

package logger

var Info *log.Logger

func init() {
    Info = log.New(io.Stderr, "INFO: ", log.Ldate|log.Ltime|log.Llongfile)
}

Tools

# documentation
go doc io       # functions/constants on 'io'
go doc io.File  # methods on 'io.File'

# build/run main package
go run .

# test

# build management
go build
go clean
go install