2013年12月17日火曜日

始めよう!Go言語(実際にやってみよう編)

にゃんぱ(ry
早くも3度目の登場Nashioです.(3/17って頭おかしい)

アドベントカレンダーも17日目を向かえ,そろそろゴールが見え始めてきました.
(それに伴い4年生には卒論の足音が聞こきそうですが...)

今回はアドベントカレンダー2日目で予告していた通りGo言語のプログラムを書いてみようと思います.

実際にやってみよう!!


Go言語はチュートリアルがかなり充実しているので,ほんとに勉強しようと思ったらこんな記事を読むより本家サイトチュートリアルを見ることをオススメします.
また,参考サイト ここに初心者が見ると幸せになれるサイトがまとまっているのでそこを見てみるといいと思います.

ではそろそろ本題に入りましょう.
今回は超簡単なWebサーバを作ってみましょう!!

作ってみたソースコード(app.go)は以下のとおりです.

package main

import (
    "net/http"
)

func main() {
    http.Handle("/", http.FileServer(http.Dir("html")))
    http.ListenAndServe(":8080", nil)
}
たった10行でWebサーバがたっちゃいます.

では,コードの中身を見て行きましょう(見るほどの内容無い気がするけどね)

package main
Go言語はpackageから始まります.main関数があるのでmainにしておきます.

import (
    "net/http"
)
ここではパッケージのインポートをしています.
上記のようにグループ化して複数をまとめて書くことが出来ます.
今回は"net/http"パッケージを追加しています.
import "net/http"
も同じ意味です.

func main() {
    http.Handle("/", http.FileServer(http.Dir("html")))
    http.ListenAndServe(":45678", nil)
}
ここはmain関数です.このファイルを実行するとはじめにこの関数が呼ばれます.
http.Handle("/", http.FileServer(http.Dir("html")))
ここでハンドラの宣言を行っています.
第1引数でpathを指定(ここでは"/"パス),今回は簡単なWebサーバを作るので,htmlディレクトリ以下の静的ファイルを表示するイベント関数を第2引数に指定します.

http.ListenAndServe(":45678", nil)
ここでサーバが起動します.
第1引数にしようポート(ウェルノウンは避けたほうがよい)を指定, 第2引数にはnilを指定しましょう.

後は作ったapp.goファイルと同じディレクトリにhtmlディレクトリを作成し,その下に表示したhtmlファイル等を配置しましょう.

これで準備は完了です.

さぁお待ちかね実行のお時間です.
Go言語はコンパイル言語なのでコンパイルしましょう.
go build app.go
これでコンパイルができます.
あとは生成されたappファイルを
./app
で実行しましょう.
私はこんなかんじなものを表示させてみました.
ちなみにGo言語では
go run app.go
で簡易実行することが出来ます.(あくまで簡易)

おわりに


みなさんいかがだったでしょうか?
詳しいプログラムの解説はしていませんが,こんな簡単にWebサーバを作ることができちゃいました.
みなさんGo言語楽しみましょう!!

最後に今回言いたかったことはGo言語のキャラがかわいいということでした.

0 件のコメント:

コメントを投稿