首页 > 其他分享 >1.23总结

1.23总结

时间:2024-01-24 09:01:44浏览次数:29  
标签:总结 name go flag 参数 命令行 1.23 main

package main

import (
"fmt"
"os"
)

func main() {
commandArgs := os.Args
fmt.Println(commandArgs)
}

执行程序: 递归浏览指定目录下所有文件

go run main.go --name ls --value /etc -r

输出: [/tmp/go-build2637413899/b001/exe/main --name ls --value /etc -r]

命令行参数解析 -- flag包
需要知晓程序的命令行需要传递哪些参数,如果没有传递该参数,那么默认值是什么,参数的说明

使用flag的流程:

  1. 初始化存放命令行参数的全局变量
  2. 在main包的init函数中注册需要解析的命令行参数,包含参数的类型、参数存放到哪个变量、参数的名称、参数的默认值、参数的使用说明
  3. 在定义解析命令行参数最后,添加 flag.Parse(),解析传递到程序的命令行参数到变量中
  4. 主函数中通过全局变量引用命令行参
  5. 运行主函数,通过 -<参数名>= 或 -<参数名> 方式传参

解析命令行参数的基本文法:

  1. flag.<类型>Var(<指针>, <参数名称>, <默认值>, <用法说明>)
  2. 等价方法: flag.<类型>(<参数名称>, <默认值>, <用法说明>)
  • 区别在于,Var后缀方法是通过指针将值存放到指针指向的变量,未带Var后缀的方法返回一个指定值的指针
  • 相同的,参数值不同则使用不同的类型,都包含参数的名称、参数的默认值、该参数使用说明
  • 类型是基本数据类型:int int64 uint uint64 string bool fl0at64 Duration
    package main

import (
"flag"
"fmt"
)

// 1. 声明保存命令行参数的变量
var (
name string
value string
isRecursive bool
)

func init() {
// 2. 注册需要解析的命令行参: 参数名、默认值、参数说明
flag.StringVar(&name, "name", "none", "执行命令的名称")
flag.StringVar(&value, "value", "none", "执行命令的参数")
flag.BoolVar(&isRecursive, "recursive", false, "是否递归")

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

}

func main() {
// 4. 主程序中通过全局变量引用命令行参
fmt.Println(name, value, isRecursive)
}

输出:ls /etc true

go run main.go -name ls -value /etc -recursive

输出: ls /etc false

go run main.go -name ls -value /etc
Flag包相关的其他方法

flag.Set()解析后修改或设置命令行参数
package main

import (
"flag"
"fmt"
)

// 1. 声明保存命令行参数的变量
var (
name string
)

func init() {
// 2. 声明需要解析的命令行参: 参数名、默认值、参数说明
flag.StringVar(&name, "name", "none", "执行命令的名称")

// 将name的值修改为 find
flag.Set("name", "find")

}

func main() {
// 4. 主程序中通过全局变量引用命令行参
fmt.Println(name)
}

输出:find

go run main.go -name ls

标签:总结,name,go,flag,参数,命令行,1.23,main
From: https://www.cnblogs.com/XiMenXve/p/17983826

相关文章

  • 2023 的一些总结
    2023的一些总结李宗盛在山丘开头里面写道,"想说却还没说的还很多攒着是因为想写成歌"。同样的,在印象中在2023好像做了很多东西,接触了很多技术,但是一直没有整理,攒着攒着就到年底了。细细思考了一下,有两个板块是今年主要发力的点对网络的探索对业务代码优化的思考对网络......
  • 1.23
    模拟赛题根本不想调啊。但是真的是模拟赛题吗,显然它不应当按照模拟赛来看,但是只有这样才会让我好受些。实力本来就不足,现在我就是在为之前的颓废而买单,错误的心态,过慢的进度,大量的颓废以及贺题解的恶习终于回报了我,所有小题都狠狠地挂分,当然最后的提高难度的题也是直接暴力,菜就......
  • 今日总结
    统计男女人数,并分别计算出男性和女性的最高和最低身高,数据格式“序号M/F身高” //生成性别身高数据,格式“序号性别(M/F)身高”privatestaticvoidmakeHeightData()throwsIOException{FilenewFile=newFile("src/main/files/heightData.txt");......
  • 1.23闲话
    推歌:光与影的对白/洛天依byCopy快期末考试了,所以来机房的只有我了但是我说的不对,今天其实有不少来的但是晚三之前就走光了找到了几张存起来的夏虫图,但是貌似有点小?唯一一张大图放末尾了阿$\infty$阿$\infty$我对贪心策略大幅改进,现在可以过掉很多数据了,感觉再改一下就......
  • 项目总结
    时间片轮询:结构体封装每个任务的时间片(也就是执行间隔),计数器,函数指针。采用定时器计时。比如说任务1每2s执行一次,任务2每5s执行一次,定时器每1s产生中断,定时时间一到每个任务的计数器就加1,当计数器和时间片相等时执行该任务。任务冲突:将每个任务对应的结构体装入结构体数组,采用遍......
  • 百度网盘(百度云)SVIP超级会员共享账号每日更新(2024.01.23)
    一、百度网盘SVIP超级会员共享账号可能很多人不懂这个共享账号是什么意思,小编在这里给大家做一下解答。我们多知道百度网盘很大的用处就是类似U盘,不同的人把文件上传到百度网盘,别人可以直接下载,避免了U盘的物理载体,直接在网上就实现文件传输。百度网盘SVIP会员可以让自己百度账......
  • 2024.01 总结
    1.模拟赛总的来说状态较好,只有一次较大的挂分。1-1.优点:思维方面:能够推出DP式子,通过打表找到一些规律。码力方面:基础的数据结构实现很少出错。策略方面:先把自己能拿的分拿满。1-2.缺点:思维方面:推出式子不会优化。码力方面:难以实现复杂的数据结构和代码。......
  • 每日总结(python文本分析)
    导入文本文档并输出在终端#Python3.x版本importos#获取根目录下文件的绝对路径root_path="./"file_path=os.path.join(root_path,'pinglun.txt')try:#打开文本文件并读取所有内容withopen(file_path,'r',encoding='utf-8')asfile:......
  • 高效又稳定的ChatGPT大模型训练技巧总结,让训练事半功倍!
    高效又稳定的ChatGPT大模型训练技巧总结,让训练事半功倍!前言近期,ChatGPT成为了全网热议的话题。ChatGPT是一种基于大规模语言模型技术(LLM,largelanguagemodel)实现的人机对话工具。现在主流的大规模语言模型都采用Transformer网络,通过极大规模的数据进行自监督训练。但是,......
  • 1.23学习进度
    1.RDD定义:弹性分布式数据集,是spark中最基本的数据抽象,代表一个不可变、可分区、里面的元素可并行计算的集合2.RDD五大特性   Alistofpartitions:RDD是有分区的   Afunctionforcomputingeachsplit:计算方法会做用到每一个分片(分区)之上   Alistofdependencies......