投稿日:

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

投稿日:

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