From c7bee051a50cd1de07dc8fd87a6cfe72b529f114 Mon Sep 17 00:00:00 2001 From: Robert Jeutter Date: Thu, 30 Dec 2021 20:34:13 +0100 Subject: [PATCH] add README --- README.md | 107 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..dc1da00 --- /dev/null +++ b/README.md @@ -0,0 +1,107 @@ +# GO Playground +This repo ist to learn and play with GO. + +All Code is written and tested on a Ubuntu 20.4 Linux. + +Learn more about [GO](https://go.dev/) + +## Install from Release +```bash +# Download release, change the number to latest release +curl -OL https://golang.org/dl/go1.17.5.linux-amd64.tar.gz +# verify integrity of download, compare with website's shown hash +sha256sum go1.16.7.linux-amd64.tar.gz +# extract tarball +sudo tar -C /usr/local -xvf go1.17.5.linux-amd64.tar.gz +# set up paths +sudo nano ~/.profile +> export PATH=$PATH:/usr/local/go/bin +source ~/.profile +# confirm installation +which go +go version +``` + +## Install from Source +```bash +# install requirements +sudo apt install git gcc +# get source repository +git clone https://go.googlesource.com/go goroot +cd goroot +# is the version string of the release +git checkout +cd src +# install +./all.bash +# test installation +which go +go version +``` + +The compilation environment can be customized by environment variables (but not required). Heres a short list +- `$GOROOT`: root of the GO tree, often `$HOME/go1.X` +- `$GOPATH`: directory where Go projects outside the Go distribution are typically checked out. Executables outside the Go distribution are installed in $GOPATH/bin (or $GOBIN, if set) +- `$GOBIN`: directory where executables outside the Go distribution are installed using the go command + +To change any variable, edit your `~/.profile` file. Scroll all the way down to the end of the file and add the following with your specifications (sample here shows default values) +```bash +GOROOT=$HOME/go1.X +GOPATH=$HOME/go +GOBIN=$GOPATH/bin +``` +Feel free to change it to your needs. Finally make the system aware of the new profile and run `source ~/.profile` + + +### Update your GO Version +GO releases can be fetched with the installed repository above. To never forget any release you can join the [golang-announce mailing list](https://groups.google.com/group/golang-announce). + +To update to the latest release, simply run +```bash +cd go/src +git fetch +# change to latest release tag e.g. go1.9 +git checkout +./all.bash +``` + +## First programm +```go +package main + +import "fmt" + +func main() { + fmt.Printf("hello, world\n") +} +``` +Build and run this program: +```bash +go run hello.go +``` + +## Code to binary +The `go run` command is used as a shortcut for compiling and running a program that requires frequent changes. + +When you’ve finished your code and want to run it without compiling each time, use `go build` to turn your code into an executable binary. Building code into an executable binary consolidates the application into a single file with all the (support) code necessary to execute the binary. + +Once built, run `go install` to place the program on an executable file path to run it from anywhere on the system. + +To build and install executables you need an `go.mod` file with your executable definitions. Follow the [helloworld program](1-hello-world/hello.go) to see how. + +```bash +# make sure to run from same directory as .go file +go build +# execute binary +./hello +# install to system +go install +# execute global binary +hello +``` + +## Install additional tools +Several Go tools are kept in the `golang.org/x/tools` repository. To install one of the tools, e.g. `gopls`: +```bash +go install golang.org/x/tools/gopls@latest +``` \ No newline at end of file