内容简介:代码实现:依赖 flag和 os 类库,读取执行main方法的参数的个数和参数值flag指向一个命令,os用来获取参数的值和个数完整调用
参考
正文
- 进入到项目代码 main包的路径下执行 go install命令,会在 GOPATH/bin路径下面生成一个可执行文件,比如 coin.exe
- 然后通过 coin 命令 参数的形式执行 go 代码,每次输入一次,都表示执行一次main方法(支持带参数的执行main方法),而不是启动一个进程持续监听
代码实现:依赖 flag和 os 类库,读取执行main方法的参数的个数和参数值
flag指向一个命令,os用来获取参数的值和个数
- 默认命令算一个参数 比如 coin addCoin 命令就是2个参数
func (cli *CLI) validateArgs() { if len(os.Args) < 2 { cli.printUsage() os.Exit(1) } }
完整调用
// 入口,会完成NewBlockchain的初始化(新链的话,就创建一个创世币,老链的话,就读取数据库,加载到内存中) func main() { bc := NewBlockchain() defer bc.db.Close() cli := CLI{bc} cli.Run() }
根据命令执行相应的响应
func (cli *CLI) Run() { cli.validateArgs() addBlockCmd := flag.NewFlagSet("addblock", flag.ExitOnError) printChainCmd := flag.NewFlagSet("printchain", flag.ExitOnError) addBlockData := addBlockCmd.String("data", "", "Block data") switch os.Args[1] { case "addblock": err := addBlockCmd.Parse(os.Args[2:]) if err != nil { log.Panic(err) } case "printchain": err := printChainCmd.Parse(os.Args[2:]) if err != nil { log.Panic(err) } default: cli.printUsage() os.Exit(1) } if addBlockCmd.Parsed() { if *addBlockData == "" { addBlockCmd.Usage() os.Exit(1) } cli.bc.AddBlock(*addBlockData) } if printChainCmd.Parsed() { cli.printChain() } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Vim 跨行操作与 Ex 命令操作范围
- Docker 常用操作命令
- npm常用命令与操作
- linux 操作 ftp 常用命令
- 通过命令curl 操作ElasticSearch指南
- Docker基础命令详解——镜像及容器操作
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Approximation Algorithms
Vijay V. Vazirani / Springer / 2001-07-02 / USD 54.95
'This book covers the dominant theoretical approaches to the approximate solution of hard combinatorial optimization and enumeration problems. It contains elegant combinatorial theory, useful and inte......一起来看看 《Approximation Algorithms》 这本书的介绍吧!