go in archlinux
$ sudo pacman -S go go-tools $ go version go version go1.9.1 linux/amd64 $ cat > helloworld.go << EOF package main import "fmt" // This is a demonstrative comment! func main() { fmt.Println("Hello World!") } EOF
$ go run helloworld.go fork/exec /tmp/go-build127438955/command-line-arguments/_obj/exe/helloworld: permission denied $ mkdir -pv TMPDIR mkdir: created directory 'TMPDIR' $ export -p TMPDIR=TMPDIR/ $ go run helloworld.go Hello World!
$ cat helloworld.go package main import "fmt" // This is a demonstrative comment! func main() { fmt.Println("Hello World!") }
$ gofmt helloworld.go package main import "fmt" // This is a demonstrative comment! func main() { fmt.Println("Hello World!") }
$ godoc fmt | head use 'godoc cmd/fmt' for documentation on the fmt command PACKAGE DOCUMENTATION package fmt import "fmt"
## The Go Programming Language - documentation in web server ! $ godoc -http=:8181
## Go uses static linking by default $ go build helloworld.go $ ls -l total 752 -rwxr-x--- 1 ebal ebal 1855827 Oct 14 23:07 helloworld -rw-r----- 1 ebal ebal 109 Oct 14 23:05 helloworld.go $ ./helloworld Hello World! $ file helloworld helloworld: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, with debug_info, not stripped $ ldd helloworld not a dynamic executable $ strip helloworld $ ldd helloworld not a dynamic executable $ ls -l helloworld -rwxr-x--- 1 ebal ebal 1226248 Oct 14 23:14 helloworld ## From 1855827 ~~> 1226248 $ file helloworld helloworld: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, stripped
## Variables GOROOT GOHOME GOBIN GOPATH
$ go help environment | head -5 The go command, and the tools it invokes, examine a few different environment variables. For many of these, you can see the default value of on your system by running 'go env NAME', where NAME is the name of the variable.
$ gofmt test.go package main import ( "fmt" "os" ) func main() { arguments := os.Args for i := 0; i < len(arguments); i++ { fmt.Println(arguments[i]) } } $ go run test.go 1 2 TMPDIR/go-build729121647/command-line-arguments/_obj/exe/test 1 2
$ gofmt 2.1.go package main import ( "fmt" "os" "strconv" ) // the srtconv package for converting them into integers" func main() { arguments := os.Args sum := 0 for i := 1; i < len(arguments); i++ { temp, _ := strconv.Atoi(arguments[i]) sum = sum + temp } fmt.Println("Sum:", sum) } $ go run 2.1.go 1 2 3 Sum: 6