0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

go言語で新しいプロジェクトを作る(go v1.18)

Last updated at Posted at 2022-09-10

プロジェクト作成とHello World

Go(v 1.18)で新しいプロジェクトを作るにはまずプロジェクト用に適当なフォルダをつくります。
たとえばwebappフォルダを作ります。私はubuntuを使っていますが、Windowsを使っている人はGUIからフォルダの作成をしてください。

$ mkdir ./webapp

そしたらまずはここがgoのプロジェクトのフォルダだと宣言します。

$ cd ./webapp
$ go work init

実際に作業をするのはモジュールのフォルダなのでモジュール用フォルダを作ります。

webapp
$ mkdir ./helloworld

ここでここがモジュールのフォルダだと宣言します。

webapp
$ cd ./helloworld
$ go mod init example.com/webapp/helloworld

なお、パッケージとして一般公開したい場合はモジュール名にちゃんと命名規則があるようです。
参考: https://go.dev/blog/package-names

できたらここがプロジェクトの一部だと宣言します。

webapp/helloworld
$ go work use .

できたらプロジェクトの準備ができたのでmain.goを書きます。

webapp/helloworld
$ touch ./main.go

このmain.goを開き、こう書いてください。

webapp/helloworld/main.go
package main

func main() {
	fmt.Println("Hello World")
}

できたらビルドして実行しましょう。するとHello Worldが出力されます。

webapp/helloworld
$ go build .
$ go run .
Hello World

なお、実行はこういうやり方でもできるはずです。

$ go build example.com/webapp/helloworld
$ go run example.com/webapp/helloworld

サブパッケージ

今度はサブパッケージをつくってみます。

webapp/helloworld
$ mkdir ./subpackage
$ cd ./subpackage
$ touch subpackage1.go

このsubpackage1.goの中にこう書きます。

webapp/helloworld/subpackage/subpackage1.go
package subpackage

func Hello1() (str string)  {
	return "Hello subpackage 1"
}

もうひとつサブパッケージをつくります。

$ touch subpackage2.go
webapp/helloworld/subpackage/subpackage2.go
package subpackage

func Hello1() (str string)  {
	return "Hello subpackage 2"
}

これだけでサブパッケージの呼び出しができるようになります。
main.goを書き換えて呼び出してみます。

webapp/helloworld/main.go
package main

import (
	"fmt"
	"example.com/webapp/helloworld/subpackage"
)

func main() {
	fmt.Println("Hello World")
	fmt.Println(subpackage.Hello1())
	fmt.Println(subpackage.Hello2())
}

これを実行してみます。

webapp/helloworld
$ go build example.com/webapp/helloworld
$ go run example.com/webapp/helloworld
Hello World
Hello subpackage 1
Hello subpackage 2

ちゃんとstringの値がサブパッケージから取得できていることが確認できました。

最後に

モジュールをうまくわけてかいてマイクロサービス的な作り方ができればモダンでいいと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?