Cou氏の徒然日記

ほのぼの日記ブログです。

Go言語の学習 その8 (launch.jsonに起動引数を定義)

今回は引数を渡すデバッグについて。

まずは引数を受け取り、分岐するロジックを main関数に追加。

main.go (修正後)
package main

import (
	"fmt"
	"os"

	"test1/calc"
)

func main() {
	//fmt.Println("Hello, world!")	
	var answer int
	switch os.Args[1] {
	case "-addtion":
		answer = calc.Add(10, 3)
	case "-subtract":
		answer = calc.Subtract(10, 3)
	case "-multiply":
		answer = calc.Multiply(10, 3)
	case "-divide":
		answer = calc.Divide(10, 3)
	default:
		answer = 0
	}
	fmt.Printf("%d", answer)
}

引数は "os"パッケージをインポートして、os.Args[] で取得可能なようです。

これを使って第1引数を取得し、その結果をもとに分岐させる仕組みを作ります。

(ちなみに上記の実装だと、引数がないと途中でエラーになりますが、今回は真面目に作っているわけではないので…)

 

switch文も実は複数条件を併記できるなど、色々とあるみたいですが、今は一番基本形で実装。

breakがなしでいいとか、少し違和感はありますね。

 

◆ launch.json

VSCodeでのデバッグ実行時の設定は、launch.jsonという設定ファイルに記載すればよいようです。

launch.json
{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
        "name": "Launch",
        "type": "go",
        "request": "launch",
        "mode": "auto",
        "program": "${fileDirname}",
        "env": {},
        "args": ["-addtion"]   //ここで引数を定義 (カンマ区切りで複数指定可能)
        }
    ]
}

詳しいフォーマットはわかりませんが、上記のように "args" に引数を配列で指定すればよさそうです。

上記で、第1引数に "-addtion" を設定して実行するように定義。

 

これで実行すると・・・

これで引数が取れて、引数の値で分岐が動くことを確認。

launch.jsonの細かい仕様はまだ理解していませんが、ひとまずこれで色々とできそうですね。