use 'flag' to make a cli app

package main

import (
	"flag"
	"fmt"
	"os"
)

func main() {
	age := flag.Int("age", 0, "Input age [int]")
	ifAdult := flag.Bool("isAdult", false, "default is false, set true ifAdult")
	var ip string
	flag.StringVar(&ip, "ip", "", "input ip : 192.168.1.1:1080")
	flag.Parse()
	rests := flag.Args()

	test := os.Args
	fmt.Println(*age, ifAdult, ip)
	fmt.Println(test)
	fmt.Println(rests)
}
/*
F:\Coding\letsgo\5_开源学go\flag>main.exe -age 12 -ip "192.168.2.135:10809" "testes" "12345"
12 0xc0000a60d0 192.168.2.135:10809
[main.exe -age 12 -ip 192.168.2.135:10809 testes 12345]
[testes 12345]
*/

There are two ways to get params, one is using flag.TYPE(), you will get param’s pointer; Another is using a var bind to falg.TYPEVar, you will get parm directly.