Have just started learning about Go (do people say "Go" or "Golang"?)
I got the hello world example running. I have my GOROOT AND GOPATH set up.
Now I want to do something bit more advanced, for example open csv file, for which I found a tutorial to do that here
In order to make this script work, I need the packages that are being imported eg "bufio", "encoding/csv", etc.
Do I have to manually search https://github.com/golang/go/wiki/Projects or some other repository, download and unzip these into my GOPATH "pkg" directory?
Or does Go/Golang have something equivalent to Python's "pip install" that would do this for me?
import (
"bufio"
"encoding/csv"
"os"
"fmt"
"io"
)
func main() {
// Load a TXT file.
f, _ := os.Open("C:\\Users\\bb\\Documents\\Dropbox\\Data\\bc hydro tweets\\bchtweets.csv")
// Create a new reader.
r := csv.NewReader(bufio.NewReader(f))
for {
record, err := r.Read()
// Stop at EOF.
if err == io.EOF {
break
}
// Display record.
// ... Display record length.
// ... Display all individual elements of the slice.
fmt.Println(record)
fmt.Println(len(record))
for value := range record {
fmt.Printf(" %v
", record[value])
}
}
}
Go has go get
which is similar to pip install
in Python. (ref)
Read every single line of this beautiful documentation's section: https://golang.org/doc/code.html#Organization
BTW, all packages you have in your import section are from standard library. So you don't have to install anything for this example.
Best way to install a package is go get
which simply clones a git repo to your $GOPATH/src
and you should stick to it as long as you can. If you must use some package version you can create fork for a specified commit and go get
that fork or use one of many vendoring toolds https://github.com/golang/go/wiki/PackageManagementTools
The Glide package manager is maybe your closest option to pip. You have config (and lock) files, can specify versions, etc.
Until Go 1.6 is out you'll need to set the environment variable GO15VENDOREXPERIMENT=1
for the go
tool to pickup the packages in the vendor/
folder. In Go 1.6 this will be on by default. Glide stores packages in a vendor/
folder instead of the GOPATH
(even though the root project needs to be in the GOPATH
) so that different applications can have and regularly use different versions of dependencies.
If you want something a little different there are numerous package managers listed on the wiki.
Disclosure: I'm on of Glide's developers. Pip was one of the inspirations for it.