使用os包和flag包实现读取main命令入参
os包的Args包括了命令名本身,作为读取参数的第一个值。
flag.Args读取命令后的入参(要配合flag.Parse()使用)。
也就是,os的比flag多一个命令名的读取。
package main import ( "flag" "fmt" "os" ) func main() { // os.Args方式 args := os.Args if args == nil || len(args) < 2 { fmt.Println("Hello 世界!") } else { fmt.Println("Hello ", args[1]) // 第二个参数,第一个参数为命令名 } // flag.Args方式 flag.Parse() var ch []string = flag.Args() if ch != nil && len(ch) > 0 { fmt.Println("Hello ", ch[0]) // 第一个参数开始 } }
以上所述就是本文的全部内容了,希望大家能够喜欢。
相关推荐
-
GO语言并发编程之互斥锁、读写锁详解
在本节,我们对Go语言所提供的与锁有关的API进行说明.这包括了互斥锁和读写锁.我们在第6章描述过互斥锁,但却没有提到过读写锁.这两种锁对于传统的并发程序来说都是非常常用和重要的. 一.互斥锁 互斥锁是传统的并发程序对共享资源进行访问控制的主要手段.它由标准库代码包sync中的Mutex结构体类型代表.sync.Mutex类型(确切地说,是*sync.Mutex类型)只有两个公开方法--Lock和Unlock.顾名思义,前者被用于锁定当前的互斥量,而后者则被用来对当前的互斥量进行解锁. 类型sy
-
GO语言标准错误处理机制error用法实例
本文实例讲述了GO语言标准错误处理机制error用法.分享给大家供大家参考.具体分析如下: 在 Golang 中,错误处理机制一般是函数返回时使用的,是对外的接口,而异常处理机制 panic-recover 一般用在函数内部. error 类型介绍 error 类型实际上是抽象了 Error() 方法的 error 接口,Golang 使用该接口进行标准的错误处理. 复制代码 代码如下: type error interface { Error() string } 一般情况下,如果函数需要返
-
GO语言异常处理机制panic和recover分析
本文实例分析了GO语言异常处理机制panic和recover.分享给大家供大家参考.具体如下: Golang 有2个内置的函数 panic() 和 recover(),用以报告和捕获运行时发生的程序错误,与 error 不同,panic-recover 一般用在函数内部.一定要注意不要滥用 panic-recover,可能会导致性能问题,我一般只在未知输入和不可靠请求时使用. golang 的错误处理流程:当一个函数在执行过程中出现了异常或遇到 panic(),正常语句就会立即终止,然后执行 d
-
Go语言实现简单的一个静态WEB服务器
学习Go语言的一些感受,不一定准确. 假如发生战争,JAVA一般都是充当航母战斗群的角色. 一旦出动,就是护卫舰.巡洋舰.航母舰载机.预警机.电子战飞机.潜艇等等 浩浩荡荡,杀将过去. (JVM,数十个JAR包,Tomcat中间件,SSH框架,各种配置文件...天生就是重量级的,专为大规模作战) 而GO语言更像F35战斗轰炸机 单枪匹马,悄无声息,投下炸弹然后走人. 专属轰炸机,空战也会一点点. 实在搞不定,就叫它大哥F22. (GO是编译型语言,不需要依赖,不需要虚拟机,可以调用C代码并且它足
-
GO语言数组和切片实例详解
本文实例讲述了GO语言数组和切片的用法.分享给大家供大家参考.具体分析如下: 一.数组 与其他大多数语言类似,Go语言的数组也是一个元素类型相同的定长的序列. (1)数组的创建. 数组有3种创建方式:[length]Type .[N]Type{value1, value2, ... , valueN}.[...]Type{value1, value2, ... , valueN} 如下: 复制代码 代码如下: func test5() { var iarray1 [5]int32
-
Go语言中的Array、Slice、Map和Set使用详解
Array(数组) 内部机制 在 Go 语言中数组是固定长度的数据类型,它包含相同类型的连续的元素,这些元素可以是内建类型,像数字和字符串,也可以是结构类型,元素可以通过唯一的索引值访问,从 0 开始. 数组是很有价值的数据结构,因为它的内存分配是连续的,内存连续意味着可是让它在 CPU 缓存中待更久,所以迭代数组和移动元素都会非常迅速. 数组声明和初始化 通过指定数据类型和元素个数(数组长度)来声明数组. 复制代码 代码如下: // 声明一个长度为5的整数数组 var array [5]int
-
Go语言interface详解
interface Go语言里面设计最精妙的应该算interface,它让面向对象,内容组织实现非常的方便,当你看完这一章,你就会被interface的巧妙设计所折服. 什么是interface 简单的说,interface是一组method的组合,我们通过interface来定义对象的一组行为. 我们前面一章最后一个例子中Student和Employee都能SayHi,虽然他们的内部实现不一样,但是那不重要,重要的是他们都能say hi 让我们来继续做更多的扩展,Student和Employe
-
使用os包和flag包实现读取main命令入参
os包的Args包括了命令名本身,作为读取参数的第一个值. flag.Args读取命令后的入参(要配合flag.Parse()使用). 也就是,os的比flag多一个命令名的读取. package main import ( "flag" "fmt" "os" ) func main() { // os.Args方式 args := os.Args if args == nil || len(args) < 2 { fmt.Println(
-
Golang开发命令行之flag包的使用方法
目录 1.命令行工具概述 2.flag包介绍 3.flag包命令行参数的定义 4.flag包命令行参数解析 5.flag包命令行帮助 6.flag定义短参数和长参数 7.示例 1.命令行工具概述 日常命令行操作,相对应的众多命令行工具是提高生产力的必备工具,鼠标能够让用户更容易上手,降低用户学习成本. 而对于开发者,键盘操作模式能显著提升生产力,还有在一些专业工具中, 大量使用快捷键代替繁琐的鼠标操作,能够使开发人员更加专注于工作,提高效率,因为键盘操作模式更容易产生肌肉记忆 举个栗子:我司业务
-
Golang flag包的具体使用
目录 入门 demo 运行 demo 解读 flag 包源码 总结 在 Golang 程序中有很多种方法来处理命令行参数.简单的情况下可以不使用任何库,直接处理 os.Args:其实 Golang 的标准库提供了 flag 包来处理命令行参数:还有第三方提供的处理命令行参数的库,比如 Pflag 等.本文将介绍 Golang 标准库中 flag 包的用法.本文的演示环境为 ubuntu 18.04. 入门 demo 在 Go workspace 的 src 目录下创建 flagdemo 目录,并
-
IOS 详解socket编程[oc]粘包、半包处理
IOS 详解socket编程[oc]粘包.半包处理 在做socket编程时,如果是做tcp连接,那就不可避免的会遇到粘包与半包的问题,粘包就是多组数据被一并接收了,粘在了一起,无法做划分:半包就是有数据接收不完整,无法处理.要解决粘包.半包的问题,一般在设计数据(消息)格式时会约定好一个字段专门用于描述数据包的长度,这样就使数据有了边界,依靠这个边界,就能把每组数据划分出来,数据不完整时也能获知数据的缺失. (当然也可以把数据设计成定长数据,但这样不够灵活:或者用\n,\r这类字符作为数据划分依
-
浅谈maven的jar包和war包区别 以及打包方法
jar文件包括java普通类.资源文件和普通文件,在maven中即是打包src/main/java和src/main/resources资源文件夹下的所有文件.在打包的时候会自动生成MATA-INF文件夹,用于存储maven的pom信息和MANIFEST.MF文件.例如: war文件包含全部的web应用程序,即所有的java类,配置信息和jsp.js等静态资源.但是需要注意war引用war的时候会将应用war的资源全部拷贝到当前war的相同文件下,重名的文件会被替换.例如: war包依赖: <d
-
Mac中配置gradle环境及使用android studio打包jar包与arr包的方法
前言 在Mac中用android studio 导出jar包最重要的是需要配置gradle ,它包的导出也是通过gradle命令进行的. 所以,如果想成功打包,要先配置好gradle环境,这样你才可以在android studio中的terminal中直接使用gradle命令了.下面话不多说了,来一起看看详细的介绍吧. gradle 环境变量的配置 1.这个配置和jdk的环境变量配置类似 启动终端,进入当前用户目录. 2.创建 .bash_profile 文件,如果已经有了就直接打开 3.用命令
-
对python3 urllib包与http包的使用详解
urllib包和http包都是面向HTTP协议的.其中urllib主要用于处理 URL,使用urllib操作URL可以像使用和打开本地文件一样地操作.而 http包则实现了对 HTTP协议的封装,是urllib.request模块的底层. 1.urllib包简介 2. http 包简介 1.urllib包简介 urllib包主要模块有: 1.urllib.request -----用于打开 URL网址: 2.urllib.error ---------定义了常见的urllib.request会引
-
Android手机上同时安装正式包与测试包的方法
1. 前言 Maybe 你会有这个烦恼,在开发的时候,测试突然告诉你,正式包上有点问题,需要看一下,这时候你打开测试机发现上面装的是测试包,没事,那就卸载了装个正式包呗.然后嘞,正式包的问题确认完了,发现不是 Bug,而是一个 Feature,你需要回到测试包继续开发,结果发现,又得把正式包卸载了然后装个测试包. 这一来二去的多麻烦呀~ 怎么解决呢,有人说,我手里头有两台测试机,一台装正式包,另一台装测试包.我想说,陈独秀同学,你先坐下,咱大多数人都只有一台测试机呀. 那么,问题来了,怎么实现一
-
android studio编译jar包或者aar包的方法教程详解
1. 在原有工程目录右键-> new ->Module->: 2. 选择library: 3. 一路next,最后finish: 4. 在新生成的lib module下的build.gradle中添加如下代码: task makeJar(type: Copy) { //删除存在的 delete 'build/outputs/aar/plugin-release.aar' delete 'libs/' //设置拷贝的文件来源 from('build/outputs/aar/') ////新
-
SpringBoot工程搭建打包、启动jar包和war包的教程图文详解
工程搭建 1.File->new->project: 2.选择"Spring Initializr",点击next:(jdk1.8默认即可) 3.完善项目信息,组名可不做修改,项目名可做修改:最终建的项目名为:test,src->main->java下包名会是:com->example->test:点击next: 4.Web下勾选Spring Web Start,(网上创建springboot项目多是勾选Web选项,而较高版本的Springboot没
随机推荐
- Vue 2.0学习笔记之Vue中的computed属性
- sql2008安装后服务器改名造成名称不一致解决方法
- 教大家8天学通MongoDB——第一天 基础入门篇
- 学习vue.js表单控件绑定操作
- Java随机数算法原理与实现方法实例详解
- iOS 获取当前的ViewController的方法
- webpack常用配置项配置文件介绍
- js 概率计算(简单版)
- asp.net SqlParameter关于Like的传参数无效问题
- Docker volume使用详解及实例
- jQuery操作json常用方法示例
- jQuery设置聚焦并使光标位置在文字最后的实现方法
- 文本框倒叙输入让输入框的焦点始终在最开始的位置
- Android TreeView效果实现方法(附demo源码下载)
- 微信小程序template模板实例详解
- unittest+coverage单元测试代码覆盖操作实例详解
- Vue+webpack+Element 兼容问题总结(小结)
- Android BottomSheet效果的两种实现方式
- Vue中render方法的使用详解
- springboot 多数据源的实现(最简单的整合方式)