こんにちは、洸です!この度、1回15分でGo言語を学習できるチュートリアルを用意しました。
第1回目はパッケージ管理ツールを導入して、外部パッケージを使って設定ファイルの読み込み行いたいと思います。
-
-
おすすめ【簡単解説】Go言語とは?Go言語でできることやメリットを一挙紹介!
こんにちは!近年、多くのプログラミング言語の中で「稼げる言語」として人気が爆発しているのは、Googleが開発したGo言語です。この記事では、Go言語でできること、実用例、メリット・デメリットなどを、簡単かつ具体的に紹介していきます。これからGo言語を学びたいという人は、最後まで目を通してみてください。
続きを見る
インストール
こちらの記事でGoのインストール方法とVSCodeの設定方法を詳しく解説しています。VSCodeのターミナルに「Hello World」が表示されたら、準備完了です。
作者の開発環境
Go version:1.17
OS:mac OS Big Sur 11.6
IDE:Visual Studio Code(VSCode ) 1.63.0
ディレクトリ構成
以下のようなディレクトリ構成で進めていきます。カレントディレクトリはkoTutorialに設定します。
1 2 3 4 5 6 7 8 |
$GOPATH$ |----bin |----pkg |----src | |----github.com | | |----githubユーザ名 | | | |----koTutorial ←プロジェクト名 | | | | |----main.go |
パッケージ管理ツールを導入する
Go言語では機能やオブジェクト毎にパッケージ化を行い、そのパッケージをインポートしてプログラムを記述します。
1 2 3 4 5 6 7 |
package main import "fmt" func main() { fmt.Println("hello world") } |
そのパッケージ達を上手に管理してくれるのがGo Moduleです。
go.modというファイルに使用するパッケージとバージョンが記録されていて、プログラムはgo.modを使ってパッケージの参照を行います。go.modを作成するには以下のコマンドを実行します。
1 |
% go mod init |
成功するとカレントディレクトリにgo.modが作成されます。
1 2 3 4 5 6 7 8 9 |
$GOPATH$ |----bin |----pkg |----src | |----github.com | | |----githubユーザ名 | | | |----koTutorial | | | | |----main.go | | | | |----go.mod ←new |
こちらがファイルの中身です。基本的に直接編集はせず、パッケージをダウンロードすると自動でパッケージが追加されていきます。
1 2 3 |
module github.com/githubユーザ名/koTutorial go 1.17 |
ちなみに、fmtは標準パッケージと呼ばれ、Goをインストールした時に同時にインストールされています。標準パッケージはgo.modには追記されず、サードーパーティパッケージ(githubなどで第三者が公開している外部のパッケージ)が追記されます。
パッケージをインストールしてみる
それでは、サードパーティパッケージをインストールしていきます。今回使うパッケージはgopkg.in/ini.v1で、簡単に設定ファイル(.ini)を読み込めるパッケージです。以下のコマンドを実行します。
1 |
% go get gopkg.in/ini.v1 |
go get: added・・と表示されればでインストール完了です。
1 2 |
% go get gopkg.in/ini.v1 go get: added gopkg.in/ini.v1 v1.66.2 |
先ほど作成したgo.modの中身を確認すると、gopkg.in/ini.v1が追記されています。
1 2 3 4 5 |
module github.com/yamazaki-ko/koTutorial go 1.17 require gopkg.in/ini.v1 v1.66.2 // indirect |
また、go.sumというファイルが自動で作成されます。go.sumはモジュールのチェックサム(データの信頼性をチェック)用のファイルなので、特に意識する必要はありません。
パッケージを使ってみる
インストールしたgopkg.in/ini.v1を使ってみましょう。まずは、.ini形式の設定ファイルを用意します。
1 2 3 4 5 |
; ;をつければコメント ; []でSectionを指定 ; Key=Valueの形式で記述 [User] SiteName = myfuns |
1 2 3 4 5 6 7 8 9 10 11 |
$GOPATH$ |----bin |----pkg |----src | |----github.com | | |----githubユーザ名 | | | |----koTutorial | | | | |----main.go | | | | |----go.mod | | | | |----go.sum | | | | |----setting.ini ←new |
次にmain.goを以下のように記述し、ソースコードを保存します。
1 2 3 4 5 6 7 8 9 10 |
package main func main() { s, err := ini.Load("setting.ini") if err != nil { fmt.Println(err) } name := s.Section("User").Key("SiteName").String() fmt.Println(name) } |
go.modが正しく機能していると、自動でimport文が追記されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
package main import ( "fmt" "gopkg.in/ini.v1" ) func main() { s, err := ini.Load("setting.ini") if err != nil { fmt.Println(err) } name := s.Section("User").Key("SiteName").String() fmt.Println(name) } |
パッケージ内のファンクションを使うには、パッケージ名.ファンクション名とします。ここでは、ini.Load("setting.ini")が例です。引数にファイルパスを指定し、設定ファイルの読み込みを行います。
ファイルパスを間違えたり、何らかの不具合で処理が失敗すると、変数「err」にerror型のオブジェクトが代入され、「fmt.Println(err)」でエラー内容が表示されます。「nil」は空という意味です。「err」が空だとLoad()の処理は成功し、「fmt.Println(err)」の処理は実行されません。
次に、読み込んだファイルからSectionとKeyを指定して、文字列形式で値を取得します。成功すると設定ファイルに記述したサイト名が表示されます。
それではプログラムを実行してみます。Goプログラムの実行はgo runコマンドを使用します。
1 |
% go run main.go |
成功するとサイト名が表示されます。
1 2 |
% go run main.go myfuns |
第2回へ
いかがだったでしょうか?Goはこのようにパッケージをインポートしてプログラムを作成します。もちろんパッケージを自作することも可能です。
第2回では、MySQLとDBを操作するパッケージを使って、CRUD操作を行いたいと思います。
-
-
第2回【GO言語入門】GORMを使ってMySQLを操作してみる【第2回】
15分で学習するGo言語チュートリアルの第2回です。第2回目はGORMを使ってMySQLをCRUD操作(Create、Read、Update、Delete)をしていきたいと思います。 GORMを使えばSQLを直接記述せずに、簡単に関係データベース(RDS)を操作することができます。
続きを見る
お疲れ様でした!Goでゲームを作成した記事はこちら!
-
-
おすすめ【第1回】Go言語(ゲームエンジン:engo)でゲームを作成してみた
こんにちは!近年、多くのプログラミング言語の中で「稼げる言語」として人気が爆発しているのは、Googleが開発したGo言語です。本記事では、2Dゲームエンジンのengoを使用してゲームを作成していきます。プログラミング初心者の方でも分かりやすいように、ソースコードの説明もしっかり行いたいと思います。
続きを見る