Golang系列文章:打印命令行参数

记得最早在学校机房学习Java时,写一个最简单main方法,当程序运行并在屏幕上打印出hello world时,内心还有些小激动呢,相信很多人都有这种经历吧。今天想借助命令行程序,总结一下Go语言的基础知识点。

首先,来一个Go语言版的hello world:

// hello.go

package main

import "fmt"

func main() {
    fmt.Println("hello world")
}

我们可以直接在命令行执行下面的命令来运行该程序:

$ go run hello.go

当然,也可以先将源代码编译成可执行文件,然后再运行可执行文件:

# 在当前目录会生成同名可执行文件
$ go build hello.go

# 运行可执行文件
$ ./hello

接下来,我们要接收命令行参数并打印出来:

// args.go

package main

import (
    "fmt"
    "os"
)

func main() {
    fmt.Println(os.Args[:]);
}

在上面代码中,os.Args表示命令行参数,它的类型是[]string字符串切片,我们通过os.Args[:]获取所有命令行参数,其中第一个是当前执行的文件,后面是额外指定的参数。我们编译后运行可执行文件:

$ ./args hello world

# 输出结果
[./args hello world]

一般来说,我们真正需要的是除第一个之外的参数,下面程序利用len()函数获取切片的长度,然后使用for循环从索引为1的地方开始取值,取出的值以连字符分隔开:

// args.go

package main

import (
    "fmt"
    "os"
)

func main() {
    var str, sep string
    for i := 1; i < len(os.Args); i++ {
        str += sep + os.Args[i]
        sep = "-"
    }
    fmt.Println(str)
}

再次编译后运行:

$ ./args hello world

# 输出结果
hello-world

我们还可以先利用os.Args[1:]获取到所需的参数集,然后使用range来遍历参数集:

// args.go

package main

import (
    "fmt"
    "os"
)

func main() {
    str, sep := "", ""
    // range会产生{index, value} 这里不需要index
    for _, arg := range os.Args[1:] {
        str += sep + arg
        sep = "-"
    }
    fmt.Println(str)
}

最后,我们还可以引入strings包,使用strings.Join()方法,将参数集以指定字符分隔开:

// args.go

package main

import (
    "fmt"
    "os"
    "strings"
)

func main() {
    fmt.Println(strings.Join(os.Args[1:], "-"));
}

原文地址:https://www.cnblogs.com/liuhe688/p/9597709.html

时间: 2024-08-27 14:08:19

Golang系列文章:打印命令行参数的相关文章

nginx 支持的命令行参数

Command-line parameters 命令行参数 nginx supports the following command-line parameters: nginx支持以下命令行参数 -? | -h - print help for command-line parameters. -? | -h -打印命令行参数的帮助 -c file - use an alternative configuration file instead of a default file. -c fil

nginx使用手册--nginx的命令行参数

nginx的命令行参数 -? 或者 -h 打印命令行参数帮助信息 -c file 为 Nginx 指定一个配置文件,来代替缺省的. -t 不运行,而仅仅测试配置文件.nginx 将检查配置文件的语法的正确性,并尝试打开配置文件中所引用到的文件. -v 显示 nginx 的版本. -V 显示 nginx 的版本,编译器版本和配置参数. -q 在配置测试期间禁止非错误信息 -s signal 向主进程(Master)发送信号,信号参数可以是以下: stop -- 快速关闭(强制关闭,比较粗暴) qu

4.1 对每个命令行参数打印文件类型

file/filetype.c #include "apue.h" int main(int argc, char *argv[]) { int i; struct stat buf; char *ptr; for (i = 1; i < argc; i++) { printf("%s: ", argv[i]); if (lstat(argv[i], &buf) < 0) { err_ret("lstat error"); c

mysql命令行参数 --- 这些参数不同于 mysqldump 后的 那些参数(下边文章开头有链接) :2种类型的参数 含义是不一样的

mysql命令行参数  --- 这些参数不同于  mysqldump  后的 那些参数   :2种类型的参数 含义是不一样的 一,mysql命令行参数 Usage: mysql [OPTIONS] [database] //命令方式 -?, --help //显示帮助信息并退出 -I, --help //显示帮助信息并退出 --auto-rehash //自动补全功能,就像linux里面,按Tab键出提示差不多,下面有例子 -A, --no-auto-rehash //默认状态是没有自动补全功能

(四)、利用命令行参数输入一个整数,打印空心菱形

1 /*利用命令行参数输入一个整数,并判断该数字是否为奇数,如果是奇数,则用其作行数打印空心菱形 2 –PS:将字符串转换为数字的方法 3 •int num=Integer.parseInt(String number);*/ 4 5 package com.gen; 6 public class ArgumentKongLing { 7 public static void main(String args[]) 8 { 9 for (int m= 0; m < args.length;m++

聊聊默认支持的各种配置源[内存变量,环境变量和命令行参数]

聊聊默认支持的各种配置源[内存变量,环境变量和命令行参数] 较之传统通过App.config和Web.config这两个XML文件承载的配置系统,.NET Core采用的这个全新的配置模型的最大一个优势就是针对多种不同配置源的支持.我们可以将内存变量.命令行参数.环境变量和物理文件作为原始配置数据的来源,如果采用物理文件作为配置源,我们可以选择不同的格式(比如XML.JSON和INI等) .如果这些默认支持的配置源形式还不能满足你的需求,我们还可以通过注册自定义ConfigurationSour

第5章4节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 命令行参数解析(原创)

天地会珠海分舵注:本来这一系列是准备出一本书的,详情请见早前博文"寻求合作伙伴编写<深入理解 MonkeyRunner>书籍".但因为诸多原因,没有如愿.所以这里把草稿分享出来,所以错误在所难免.有需要的就参考下吧,转发的话还请保留每篇文章结尾的出处等信息. 设置好Monkey的CLASSPATH环境变量以指定"/system/framework /framework/monkey.jar"后,/system/bin/monkey这个shell脚本就会通

linux平台学x86汇编(十五):使用命令行参数

[版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途] 在高级语言中,程序在命令行上启动时常常带一个或多个参数,在汇编语言中也可以实现这一特性.在实现这一特性之前,我们先了解一下linux如何从命令行执行程序. 每一个应用程序开始执行时,系统都会为该程序分配一块内存区域,并且每个程序都分配相同的虚拟内存地址.虚拟内存地址由操作系统映射到物理内存地址.在Linux中,程序的虚拟内存地址是从0x80480000开始,到地址0xbfff

.NET Core采用的全新配置系统[5]: 聊聊默认支持的各种配置源[内存变量,环境变量和命令行参数]

较之传统通过App.config和Web.config这两个XML文件承载的配置系统,.NET Core采用的这个全新的配置模型的最大一个优势就是针对多种不同配置源的支持.我们可以将内存变量.命令行参数.环境变量和物理文件作为原始配置数据的来源,如果采用物理文件作为配置源,我们可以选择不同的格式(比如XML.JSON和INI等) .如果这些默认支持的配置源形式还不能满足你的需求,我们还可以通过注册自定义ConfigurationSource的方式将其他形式数据作为我们的配置来源. [ 本文已经同