今回は引数を渡すデバッグについて。
まずは引数を受け取り、分岐するロジックを main関数に追加。
main.go (修正後)
package main
import (
"fmt"
"os"
"test1/calc"
)
func main() {
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という設定ファイルに記載すればよいようです。
{
// 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の細かい仕様はまだ理解していませんが、ひとまずこれで色々とできそうですね。