Posted on

Tutorial for Go lang

備忘録。以下、Echo より
—–

package main

import (
   "os";
   "flag"; // command line option parser
)

var omitNewline = flag.Bool("n", false, "don't print final newline")

const (
   Space = " ";
   Newline = "\n";
)

func main() {

   flag.Parse();   // Scans the arg list and set up flags

   var s string = "";

   for i := 0; i < flag.NArg(); i++ {
      if i > 0 {
         s += Space
      }
      s += flag.Arg(i)
   }

   if !*omitNewline {
      s += Newline    // 改行
   }
   os.Stdout.WriteString(s);   // 文字列出力

}

—–

コマンドラインで渡されたパラメータを出力するだけのプラグラム。
主に使われているパッケージは以下の通り。日本語はかなり適当。

func Bool(name string, value bool, usage string) *bool
Bool defines a bool flag with specified name, default value, and usage string. The return value is the address of a bool variable that stores the value of the flag.
Boolは指定された名前は、デフォルト値、および使用状況の文字列でboolのフラグを定義します。戻り値はbool変数のアドレスは、フラグの値を格納します。

func Parse()
Parse parses the command-line flags. Must be called after all flags are defined and before any are accessed by the program.
Parseはコマンドラインフラグを解析します。後にすべてのフラグと定義される前に、任意のプログラムによってアクセスされる必要があります。

func NArg() int
NArg is the number of arguments remaining after flags have been processed.
NArgはフラグが処理された後に、残っている引数の数です。

func Arg(i int) string
Arg returns the i’th command-line argument. Arg(0) is the first remaining argument after flags have been processed.
Argはi番目のコマンドライン引数を返します。 フラグが処理された後、Arg(0)は最初の残っている引数。

あとfor文に括弧を付けない(CでもPHPでも付けるのに)ことに違和感を感じてしまった。
シンプルだなー go lang

Posted on

Go lang 使ってみました

とは言っても、 Google の新プログラミング言語 Go をMac OSX にインストール に記載された通りに
インストールとサンプルプログラムを実行してみただけです。

コンパイルは確かに早いというか(コンパイル)されたの?と感じました。

bin ディレクトリ作成

cd $HOME
mkdir bin

以下の内容で .bashrc を作成

# Google Go
export GOROOT=$HOME/go
export GOOS=darwin
export GOARCH=386
export PATH=$PATH:$HOME/bin


env | grep ‘^GO’

で確認。すると結果は以下の通り(※私の環境の場合)


GOARCH=386
GOROOT=/Users/junji/go
GOOS=darwin

mercurialをインストール

sudo easy_install mercurial

その後

$ hg clone -r release https://go.googlecode.com/hg/ $GOROOT

結構時間がかかります。
以下省略・・・

hello.go を作成し「hello, go.」を出力するプログラムを作成

8g hello.go
8l hello.8
./8.out

コンパイルして、リンクさせて実行する。

結果は以下の通り。

hello, go.

今後どのように展開されるのかひっそり見守りたいと思います。

参考:The Go Programming Language