21.Go语言·命令行参数

main.go

// Go语言·命令行
package main

//  包的本质是创建不同的文件夹
//  go的每一个文件都是属于一个包的
//  go以包的形式管理项目和文件目录。
//  import "包的路径"
import (
    model "day27/model"
)

var content string = `
————————————————Go语言·命令行————————————————————
一、命令行参数

二、flag包解析命令行参数
    flag包实现了命令行参数的解析。
    
`


func main() {
    model.Entry()
}

model/Utils.go

package model

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

/**
 * [Init 入口]
 * @author Jhou Shuai
 * @datetime 2019-05-18T11:58:33+0800
 */
func Entry() {
    cmdFlag()
}

/**
 * [cmdArgs 命令行参数]
 * @author Jhou Shuai
 * @datetime 2019-06-10T14:25:11+0800
 */
func cmdArgs() {
    for i ,val := range os.Args {
        fmt.Printf("args[%v]=%v \n",i,val)
    }
}

/**
 * [cmdFlag flag包实现了命令行参数的解析]
 * @author Jhou Shuai
 * @datetime 2019-06-10T14:53:29+0800
 * $ go run main.go -u root -p 123456 -h 10.0.0.12 -port 6000
 * user:root pwd=123456,host=10.0.0.12,port=6000
 */
func  cmdFlag() {
    // 定义或声明变量,用于接收命令行参数
    var (
        user string
        pwd string
        host string
        port int
    )
    // user 接收 -u zhoushuai 
    // "u"  -u 指定参数
    // ""   默认值
    // "用户名,默认为空" 说明
    flag.StringVar(&user, "u","","用户名,默认为空")
    flag.StringVar(&pwd,   "p","","密码,默认为空")
    flag.StringVar(&host,   "h","localhost","主机名,默认为localhost")
    flag.IntVar(&port,"port", 3306, "端口号,默认3306")

    // os.Args[1:]
    flag.Parse()

    fmt.Printf("user:%v,pwd=%v,host=%v,port=%v \n",
    user,pwd,host,port)
}

你可能感兴趣的:(21.Go语言·命令行参数)