首页 > 其他分享 >Go 接收命令行参数

Go 接收命令行参数

时间:2024-06-09 13:00:18浏览次数:20  
标签:接收 fmt flag 参数 命令行 Go main os

在 Go 语言中,可以使用标准库中的 os 包和 flag 包来接收和处理命令行参数。

使用 os

os.Args 是一个字符串切片,其中第一个元素是程序的名称,后续元素是传递给程序的命令行参数。

示例代码

package main

import (
    "fmt"
    "os"
)

func main() {
    // os.Args[0] 是程序的名称
    // os.Args[1:] 是传递给程序的参数
    args := os.Args[1:]

    if len(args) == 0 {
        fmt.Println("No arguments provided.")
        return
    }

    fmt.Println("Received arguments:")
    for i, arg := range args {
        fmt.Printf("Argument %d: %s\n", i+1, arg)
    }
}

运行方法

假设保存为 main.go,可以通过以下命令运行:

go run main.go arg1 arg2 arg3

输出:

Received arguments:
Argument 1: arg1
Argument 2: arg2
Argument 3: arg3

使用 flag

flag 包提供了更强大的命令行参数解析功能,支持带有默认值和帮助信息的参数。

示例代码

package main

import (
    "flag"
    "fmt"
)

func main() {
    // 定义命令行参数(参数名,默认值,参数说明)
    name := flag.String("name", "World", "a name to say hello to")
    age := flag.Int("age", 0, "your age")

    // 解析命令行参数
    flag.Parse()

    // 使用命令行参数
    fmt.Printf("Hello, %s!\n", *name)
    if *age > 0 {
        fmt.Printf("You are %d years old.\n", *age)
    }

    // 打印剩余的非标志参数
    fmt.Println("Remaining arguments:", flag.Args())
}

运行方法

假设保存为 main.go,可以通过以下命令运行:

go run main.go -name Alice -age 30 additional_arg1 additional_arg2

输出:

Hello, Alice!
You are 30 years old.
Remaining arguments: [additional_arg1 additional_arg2]

说明

  1. 定义参数:使用 flag.Stringflag.Int 等函数定义命令行参数。
  2. 解析参数:使用 flag.Parse() 解析命令行参数。
  3. 使用参数:通过解引用指针(如 *name)来获取参数的值。
  4. 剩余参数:可以使用 flag.Args() 获取解析后的剩余非标志参数。

标签:接收,fmt,flag,参数,命令行,Go,main,os
From: https://www.cnblogs.com/Undefined443/p/18239465

相关文章

  • 跨语言系统中的功能通信:Rust、Java、Go和C++的最佳实践
    在现代软件开发中,使用多种编程语言构建复杂系统已成为一种常见的做法。每种编程语言都有其独特的优势和适用场景,这使得在同一个系统中使用多种语言变得合理且高效。然而,这也带来了一个重要的挑战:如何在这些不同语言之间实现高效、可靠的功能通信。本文将探讨Rust、Java、Go和C+......
  • Dragon Boat kid
    Inthemiddleofamistyvalleysurroundedbymountains,avillagetranquillystoodhere.Afewrostercrowsloomed.Mountainsinthedistancesanghappysongsbyaflockofbirds.It'stimetogetupto.prepareabigdealforforthcomingDragonBoa......
  • 向 冗长的 Django 文档说再见,迎接 Django Ninja Extra 的精彩
    大家是否曾为那繁杂冗长的Django文档而感到困扰?现在,是时候摆脱它们,全心拥抱DjangoNinjaExtra啦!Django文档大概有1000多页,内容繁杂。而DjangoNinjaExtra文档只有15页,足够我们开发一个现代的API接口了。DjangoNinjaExtra就如同一盏明灯,照亮我们高效开发的道路。......
  • Docker大学生看了都会系列(八、Dokcerfile部署go项目)
    系列文章目录第一章Docker介绍第二章2.1Mac通过Homebrew安装Docker第二章2.2CentOS安装Docker第三章Docker常用命令第四章常用命令实战第五章Docker镜像详解第六章Docker容器数据卷第七章Dockerfile详解第八章Dokcerfile部署go项目文章目录一、前言......
  • 【四种语言一网打尽(C\C++\Python\Golang)】L1-005 考试座位号
    L1-005考试座位号每个PAT考生在参加考试时都会被分配两个座位号,一个是试机座位,一个是考试座位。正常情况下,考生在入场时先得到试机座位号码,入座进入试机状态后,系统会显示该考生的考试座位号码,考试时考生需要换到考试座位就座。但有些考生迟到了,试机已经结束,他们只能拿着......
  • Dragon Boat Festival
    TodayisJune6th,theDragonBoatFestivaliscoming.TheoreignofthefestivalistomemorizeQuYuan,afamouspatrioticpoet.Asthetimewentby,plentyofactivitiesgraduallycameintobeingsuchaswrappingzongzi,racingdragonboatsandsoon.Nowa......
  • 【NAS】绿联NAS UGOS PRO 使用natfrp(Sakura Frp)内网穿透访问Docker应用
    配置加速https://registry.cn-hongkong.aliyuncs.com下载镜像创建容器【容器】-【创建】-【手动创建】-选择你下载的镜像即可在日志中查看密码访问容器以HTTPS方式访问容器输入从日志中得到的密码。然后去官网查看访问密钥(不知道官网的就去看截图上的URL)将得到的密......
  • Rockmongo详解:高效管理MongoDB的图形化利器
    Rockmongo是一个开源的MongoDB管理工具,提供了图形用户界面(GUI),便于用户对MongoDB数据库进行管理和操作。通过Rockmongo,可以直观地浏览和操作MongoDB数据库,适合不熟悉命令行操作的用户。基本语法Rockmongo不涉及特定的编程语法,但它提供了许多GUI功能来执行Mongo......
  • Spring Boot、MongoDB、Vue 2和Nginx实现一个小说网站
    在本篇文章中,我们将带你逐步实现一个完备的小说网站项目,技术栈包括SpringBoot、MongoDB、Vue2和Nginx。1.项目概述我们将实现一个基本的小说网站,包含以下主要部分:后端API:使用SpringBoot实现,负责处理数据和业务逻辑。数据库:使用MongoDB存储小说数据。前端页面:使用Vue2实......
  • 2024-06-08:用go语言,给定三个正整数 n、x和y, 表示城市中的房屋数量以及编号为x和y的两
    2024-06-08:用go语言,给定三个正整数n、x和y,表示城市中的房屋数量以及编号为x和y的两个特殊房屋。在这座城市中,房屋通过街道相连。对于每个编号i(1<=i<n),存在一条连接第i个房屋与第(i+1)个房屋的街道。此外,还有一条特殊街道连接编号为x的房屋与编号为y的房屋。对于每个k(1<=......