Skip to content

Instantly share code, notes, and snippets.

@puhitaku
Last active August 31, 2015 11:40
Show Gist options
  • Save puhitaku/9c92a1c01ebd09b41bd6 to your computer and use it in GitHub Desktop.
Save puhitaku/9c92a1c01ebd09b41bd6 to your computer and use it in GitHub Desktop.
Golang Training Text #1

Golang Training #1

Held at Fuller, Inc. office.

Install

sudo apt-get install golang
brew install go

Hello World

$GOPATH/src/github.com/user/hello/内に hello.goを作って以下のコードを入れましょう。

package main
import "fmt"

func main() {
    fmt.Printf("Hello, world!\n")
}

入力が完了したら

go install github.com/user/hello

とするとビルドされ実行できるようになる。なお、カレントディレクトリがコードの入ったフォルダの場合は単にgo installとすることでもビルドできる。

$ $GOPATH/bin/hello
Hello, world!
$ hello
Hello, world!

Your first library

Hello Worldと同様に $GOPATH/src/github.com/user/ 内にフォルダを作るとライブラリが作れる。

例としてstringutilというライブラリを作る。

mkdir $GOPATH/src/github.com/user/stringutil

reverse.goと名付けたファイルに以下のコードを入れる。

// Package stringutil contains utility functions for working with strings.
package stringutil

// Reverse returns its argument string reversed rune-wise left to right.
func Reverse(s string) string {
	r := []rune(s)
	for i, j := 0, len(r)-1; i < len(r)/2; i, j = i+1, j-1 {
		r[i], r[j] = r[j], r[i]
	}
	return string(r)
}

(from official document)

ビルドする。

go build github.com/user/stringutil

先ほどのhello.goを以下のように書き換えて動作を見る。(userは適宜書き換える)

package main

import (
	"fmt"

	"github.com/user/stringutil"
)

func main() {
	fmt.Printf(stringutil.Reverse("!oG ,olleH"))
}

ここでgo installすると、依存関係にあるライブラリも適宜インストールされる。実行してみよう。

$ hello
Hello, Go!

$GOPATH/pkg/内にビルドされたライブラリがパッケージされているのがわかる。

Package names

Goのソースコードの最初の構文は必ず、 package name でなければならない。nameはインポート時に使われるパッケージ名である。同じパッケージ内のファイルはすべて同じnameを使わなければならない。

ちなみにcrypto/rot13のような場合はrot13で参照できる。

Test

省略

echo "Creating workspace..."
cd $HOME
mkdir gowork
cd gowork
WSDIR=$(pwd)
eval echo 'Define \$GOPATH as \"$WSDIR\" in your login script.'
echo 'Optional: add a line "export PATH=$PATH:$GOPATH/bin" to your login script.'
mkdir bin
mkdir pkg
mkdir -p $WSDIR/src/github.com
echo "Done."
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment