mirror of
https://github.com/webinstall/webi-installers.git
synced 2026-04-17 23:46:38 +00:00
89 lines
1.7 KiB
Markdown
89 lines
1.7 KiB
Markdown
---
|
|
title: Go
|
|
homepage: https://golang.org
|
|
tagline: |
|
|
Go makes it easy to build simple, reliable, and efficient software.
|
|
---
|
|
|
|
To update or switch versions, run `webi go@stable` (or `@v1.21`, `@beta`, etc).
|
|
|
|
### Files
|
|
|
|
```text
|
|
~/.config/envman/PATH.env
|
|
~/.local/opt/go/
|
|
~/go/
|
|
```
|
|
|
|
## Cheat Sheet
|
|
|
|
> Go is designed, through and through, to make Software Engineering easy. It's
|
|
> fast, efficient, reliable, and something you can learn in a weekend.
|
|
>
|
|
> If you subscribe to
|
|
> [_The Zen of Python_](https://www.python.org/dev/peps/pep-0020/), you'll
|
|
> [love](https://go-proverbs.github.io/) >
|
|
> [Go](https://www.youtube.com/watch?v=PAAkCSZUG1c).
|
|
|
|
You may also want to install the Go IDE tooling:
|
|
[go-essentials](/go-essentials).
|
|
|
|
### Hello World
|
|
|
|
1. Make and enter your project directory
|
|
```sh
|
|
mkdir -p ./hello/cmd/hello
|
|
pushd ./hello/
|
|
```
|
|
2. Initialize your `go.mod` to your _git repository_ url:
|
|
```sh
|
|
go mod init github.com/example/hello
|
|
```
|
|
3. Create a `hello.go`
|
|
|
|
```sh
|
|
cat << EOF >> ./cmd/hello/hello.go
|
|
package main
|
|
|
|
import (
|
|
"fmt"
|
|
)
|
|
|
|
func main () {
|
|
fmt.Println("Hello, World!")
|
|
}
|
|
EOF
|
|
```
|
|
|
|
4. Format, build, and run your `./hello`
|
|
```sh
|
|
go fmt ./...
|
|
go build -o hello ./cmd/hello/
|
|
./hello
|
|
```
|
|
You should see your output:
|
|
```text
|
|
> Hello, World!
|
|
```
|
|
|
|
### How to run a Go program as a service
|
|
|
|
On Linux:
|
|
|
|
```sh
|
|
# Install serviceman (compatible with systemd)
|
|
webi serviceman
|
|
```
|
|
|
|
```sh
|
|
# go into your programs 'opt' directory
|
|
pushd ./hello/
|
|
|
|
# swap 'hello' and './hello' for the name of your project and binary
|
|
serviceman add --name 'hello' -- \
|
|
./hello
|
|
|
|
# Restart the logging service
|
|
sudo systemctl restart systemd-journald
|
|
```
|