热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

golang终端读写

os.Args获取命令行参数os.Args参数列表0:程序路径(gorun运行0为临时工作目录的路径,
os.Args获取命令行参数
  • os.Args参数列表
    • 0 :程序路径(go run 运行 0 为临时工作目录的路径,编译后运行,0 二进制文件名)
    • 1 第一个参数
    • 2 第二个参数…
  • len(os.Args) 参数数量

示例

/** * @Author : jinchunguang * @Date : 19-11-4 上午10:37 * @Project : tcp-chat */ package main import ( "fmt" "os" ) func main() { // 获取命令行参数 fmt.Println("命令行参数数量:", len(os.Args)) for k, v := range os.Args { fmt.Printf("args[%v]=[%v]n", k, v) } fmt.Printf("username=%v password=%v host=%v port=%v ", os.Args[2], os.Args[4], os.Args[6], os.Args[8]) }

run 直接运行

golang 终端读写
image.png

编译运行

golang 终端读写
image.png
flag包获取命令行参数

/** * @Author : jinchunguang * @Date : 19-11-4 上午10:37 * @Project : tcp-chat */ package main import ( "flag" "fmt" "os" ) // 用户 var username string // 密码 var password string // 主机名 var host string // 端口号 var port int func main() { /* flag 要放在循环外部,不能重复定义 */ // 变量,参数名,默认值,解释说明(-h显示) flag.StringVar(&username, "u", "", "用户名") flag.StringVar(&password, "p", "", "密码") flag.StringVar(&host, "h", "127.0.0.1", "主机地址") flag.IntVar(&port, "P", 3306, "端口号") flag.Parse() // visit只包含已经设置了的flag fmt.Println("------ flag遍历开始 ------") flag.Visit(func(f *flag.Flag) { fmt.Println(f.Name, f.Value, f.Usage, f.DefValue) }) fmt.Println("------ flag遍历结束 ------") /* 测试逻辑 */ // 用户名密码不能为空 if username == "" || password == "" { flag.PrintDefaults() fmt.Println("warn: 用户名,密码不能为空", username, password) os.Exit(1) } // 用户名密码指定为root、root if username != "root" || password != "root" { flag.PrintDefaults() fmt.Println("warn: 用户名,密码不正确", username, password) os.Exit(1) } // 打印 fmt.Printf("参数值:username=%v password=%v host=%v port=%v ", username, password, host, port) }

用户名,密码不能为空

golang 终端读写
image.png

用户名,密码不正确

golang 终端读写
image.png

正常输出

golang 终端读写
image.png
fmt.Scanf()来捕捉输入

/** * @Author : jinchunguang * @Date : 19-11-4 上午10:37 * @Project : tcp-chat */ package main import ( "fmt" ) // 用户 var username string // 密码 var password string // 主机名 var host string // 端口号 var port int func main() { fmt.Println("请输入用户名:") if _, err := fmt.Scanf("%s", &username); err != nil { fmt.Printf("%sn", err) return } fmt.Println("请输入密码:") if _, err := fmt.Scanf("%s", &password); err != nil { fmt.Printf("%sn", err) return } fmt.Println("请输入主机地址:") if _, err := fmt.Scanf("%s", &username); err != nil { fmt.Printf("%sn", err) return } fmt.Println("请输入端口:") if _, err := fmt.Scanf("%s", &username); err != nil { fmt.Printf("%sn", err) return } // 打印 fmt.Printf("参数值:username=%v password=%v host=%v port=%v ", username, password, host, port) }

示例

golang 终端读写
image.png
bufio.Scanner 来捕捉输入

/** * @Author : jinchunguang * @Date : 19-11-4 上午10:37 * @Project : tcp-chat */ package main import ( "bufio" "fmt" "os" ) func main() { scanner := bufio.NewScanner(os.Stdin) fmt.Println("请输入用户名:") scanner.Scan() username := scanner.Text() if err := scanner.Err(); err != nil { fmt.Fprintln(os.Stderr, "reading standard input:", err) } fmt.Println("请输入密码:") scanner.Scan() password := scanner.Text() if err := scanner.Err(); err != nil { fmt.Fprintln(os.Stderr, "reading standard input:", err) } fmt.Println("请输入主机地址:") scanner.Scan() host := scanner.Text() if err := scanner.Err(); err != nil { fmt.Fprintln(os.Stderr, "reading standard input:", err) } fmt.Println("请输入用端口:") scanner.Scan() port := scanner.Text() if err := scanner.Err(); err != nil { fmt.Fprintln(os.Stderr, "reading standard input:", err) } fmt.Printf("参数值:username=%v password=%v host=%v port=%v ", username, password, host, port) }

示例
[图片上传失败…(image-d15dd0-1572847112810)]

bufio.NewReader 来捕捉输入

/** * @Author : jinchunguang * @Date : 19-11-4 上午10:37 * @Project : tcp-chat */ package main import ( "bufio" "fmt" "os" "strings" ) func main() { text:="" reader := bufio.NewReader(os.Stdin) fmt.Println("请输入用户名") text, _ = reader.ReadString('n') // 替换掉回车,否则会有空行 username := strings.Replace(text, "n", "", -1) fmt.Println("请输入密码") text, _ = reader.ReadString('n') // 替换掉回车,否则会有空行 password := strings.Replace(text, "n", "", -1) fmt.Println("请输入主机地址") text, _ = reader.ReadString('n') // 替换掉回车,否则会有空行 host := strings.Replace(text, "n", "", -1) fmt.Println("请输入端口号") text, _ = reader.ReadString('n') // 替换掉回车,否则会有空行 port := strings.Replace(text, "n", "", -1) fmt.Printf("参数值:username=%v password=%v host=%v port=%v ", username, password, host, port) }

示例

golang 终端读写
image.png

由于时间问题,先写到这吧


推荐阅读
  • 本文介绍了在多平台下进行条件编译的必要性,以及具体的实现方法。通过示例代码展示了如何使用条件编译来实现不同平台的功能。最后总结了只要接口相同,不同平台下的编译运行结果也会相同。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 关键词:Golang, Cookie, 跟踪位置, net/http/cookiejar, package main, golang.org/x/net/publicsuffix, io/ioutil, log, net/http, net/http/cookiejar ... [详细]
  • switch语句的一些用法及注意事项
    本文介绍了使用switch语句时的一些用法和注意事项,包括如何实现"fall through"、default语句的作用、在case语句中定义变量时可能出现的问题以及解决方法。同时也提到了C#严格控制switch分支不允许贯穿的规定。通过本文的介绍,读者可以更好地理解和使用switch语句。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 3.223.28周学习总结中的贪心作业收获及困惑
    本文是对3.223.28周学习总结中的贪心作业进行总结,作者在解题过程中参考了他人的代码,但前提是要先理解题目并有解题思路。作者分享了自己在贪心作业中的收获,同时提到了一道让他困惑的题目,即input details部分引发的疑惑。 ... [详细]
  • Android开发实现的计时器功能示例
    本文分享了Android开发实现的计时器功能示例,包括效果图、布局和按钮的使用。通过使用Chronometer控件,可以实现计时器功能。该示例适用于Android平台,供开发者参考。 ... [详细]
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • 本文介绍了深入浅出Linux设备驱动编程的重要性,以及两种加载和删除Linux内核模块的方法。通过一个内核模块的例子,展示了模块的编译和加载过程,并讨论了模块对内核大小的控制。深入理解Linux设备驱动编程对于开发者来说非常重要。 ... [详细]
  • Java自带的观察者模式及实现方法详解
    本文介绍了Java自带的观察者模式,包括Observer和Observable对象的定义和使用方法。通过添加观察者和设置内部标志位,当被观察者中的事件发生变化时,通知观察者对象并执行相应的操作。实现观察者模式非常简单,只需继承Observable类和实现Observer接口即可。详情请参考Java官方api文档。 ... [详细]
  • WhenIusepythontoapplythepymysqlmoduletoaddafieldtoatableinthemysqldatabase,itdo ... [详细]
  • 基于dlib的人脸68特征点提取(眨眼张嘴检测)python版本
    文章目录引言开发环境和库流程设计张嘴和闭眼的检测引言(1)利用Dlib官方训练好的模型“shape_predictor_68_face_landmarks.dat”进行68个点标定 ... [详细]
author-avatar
王海937_264
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有