summaryrefslogtreecommitdiffstats
path: root/development/google-go-lang/README
blob: 7e8341dcf2719033a3a809a3239bb4afdf439cec (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
The Go programming language is an open source project to make programmers more
productive. Go is expressive, concise, clean, and efficient. Its concurrency
mechanisms make it easy to write programs that get the most out of multicore and
networked machines, while its novel type system enables flexible and modular
program construction. Go compiles quickly to machine code yet has the
convenience of garbage collection and the power of run-time reflection. It's a
fast, statically typed, compiled language that feels like a dynamically typed,
interpreted language.

The tools are added to the path by putting go.sh and go.csh files in
/etc/profile.d and letting the system's /etc/profile or /etc/csh.login pick it
up.  If you want to add any of Go's environment variables you can add them
there.

Also, to easily setup a user-independent path for Go libraries to be installed
to and used, is the GOPATH environment variable. This variable can be colon
delimited. For example, once installing the built google-go-lang package, then
set in your user's ~/.bashrc something like:

  export GOPATH="$HOME/src/go"

Then, you'll be able to use the `go` command to install an additional library
that will not need root permission and will be in the compiler's path.
Like so:

  go get labix.org/v2/mgo

Now in ~/src/go, you'll have this library available!

Since the golang idiom is very `go get'able as a limited user, installed
libraries from slackbuilds.org are located outside of GOROOT (which is only for
golang standard library), in /usr/share/gocode
By not setting a system-wide GOPATH defaulting to this location, then it is up
to the user of whether to include this system path as well, like:

  export GOPATH="$HOME/src/go:/usr/share/gocode"

This system source directory is primarly only for buildtime of slackbuilds.

This is because `go get' iterates through the paths provided, looking for
matching imports. If a match is not found, then is cloned to the first path
provided.  You would not want this to be a system path, as to need root
privilege to clone source.

As of go1.2, the 'go doc ...' command has been relocated to the go.tools
library (golang-googlecode-gotools), which provide `godoc`.