いろいろ備忘録日記

主に .NET とか Go とか Flutter とか Python絡みのメモを公開しています。

Goメモ-257 (複数のmain関数を共存させる)(go:build ignore)

概要

知らなかったので、忘れないうちにメモメモ。。。

以下のmattnさんのツイートで知りました。感謝。

このやり方使ったら、ちょこっとしたサンプルなどを一つのディレクトリに何個もおくことができるので、これから利用します。

試してみる

$ tree .
.
├── main1.go
├── main2.go
└── Taskfile.yml

0 directories, 3 files

main1.go

//go:build ignore
//
// - https://twitter.com/mattn_jp/status/950629429805395968
// - https://twitter.com/mattn_jp/status/1575760585563639808
package main

import "fmt"

func main() {
    fmt.Println("main1")
}

main2.go

//go:build ignore
//
// - https://twitter.com/mattn_jp/status/950629429805395968
// - https://twitter.com/mattn_jp/status/1575760585563639808

package main

import "fmt"

func main() {
    fmt.Println("main2")
}

Taskfile.yml

version: '3'

tasks:
  default:
    cmds:
      - cmd: go build
        ignore_error: true
      - cmd: go run main1.go
      - cmd: go run main2.go

実行すると以下のようになります。

$ task
task: [default] go build
package github.com/devlights/try-golang/examples/singleapp/multi_main: build constraints exclude all Go files in /workspace/try-golang/examples/singleapp/multi_main
task: [default] go run main1.go
main1
task: [default] go run main2.go
main2

参考情報

try-golang/examples/singleapp/multi_main at master · devlights/try-golang · GitHub

Go言語による並行処理

Go言語による並行処理

Amazon


過去の記事については、以下のページからご参照下さい。

サンプルコードは、以下の場所で公開しています。