博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
go 程序设计语言 命令行参数
阅读量:6311 次
发布时间:2019-06-22

本文共 1763 字,大约阅读时间需要 5 分钟。

最近打算读一读 go程序设计语言这本书, 读语言类的书是一件十分头疼的事情, 因为读一本书就意味着,看着一堆钳子 锥子工具的图片, 概念背了一大堆,仍然不知道怎么用,还是要通过实践。 还是习惯任务驱动的方式。 内容略读, 给自己提一些小的任务,逐渐提升,自认为是一件比较靠谱的学习方法。

练习 1.1 打印命令行的所有内容,包括命令本身的名字

这个练习的本意是想了解for循环的种类。 其实主要有两种,等我一会 把代码敲完ha。

5分钟后

别嫌弃简单了,可以说明问题的。 其实go 语言里面只有for循环, 你不用有其他的想法, 这个联系可以展示两种主要的。以这道题为例,一种是这种形式的:

s, sep := "", ""    for i := 0; i < len(os.Args); i++ {        s += sep + os.Args[i]        sep = " "    }    fmt.Println(s)

这种事比较传统的方式, 另一种是range

s, sep := "", ""    for _, arg := range os.Args {        s += sep + arg        sep = " "    }

里 面的_表示忽略其中的索引,由于go里面不允许使用无用的局部变量,所以一般返回值的不适用的话采取这种策略

其实虽然go只支持for循环,本人认为基本够用了.比如你要用while循环, for循环可以只保留条件变量,像下面的这种类似while的形式

for condition{}

当然,死循环也是可以的,省略 for循环三个部分,像下面的样子

for{}

现在可以给出可运行的代码了

package mainimport (    "fmt"    "os")func main() {    s, sep := "", ""    for _, arg := range os.Args {        s += sep + arg        sep = " "    }    fmt.Println(s)}

练习 1.2 打印每个参数的索引和值。 这个就没啥意思了。写了, 咱看看下一个小题, 应该挺有意思

练习 1.3 做实验测量潜在低效的版本和使用了 strings.Join的版本的运行时间差异,所谓潜在低效版本就是程序用的这种操作符的形式。

好, 那我们就做个性能测试吧, 看看这两种方式相差是多少。 go语言自带的benchmark 测试工具, 不会的同学自行百度哈。等我一下,把程序敲完。

package mainimport (    "fmt"    "strconv"    "strings"    "time")func main() {    var arr [10000]string    for i := 0; i < 10000; i++ {        arr[i] = strconv.Itoa(i)    }    t1 := time.Now()    s := ""    for _, st := range arr {        s += st    }    elapsed := time.Since(t1)    fmt.Println("+ time : ", elapsed)    t2 := time.Now()    s2 := strings.Join(arr[0:], "")    elapsed2 := time.Since(t2)    fmt.Println("Join time:", elapsed2)    if s != s2 {        fmt.Println("error")    } else {        fmt.Println("sucess")    }}

两种方式把10000个数字拼在一起,对比一下时间。

最后结果相差还是挺巨大的!!,看

  • time : 78.96146ms
    Join time: 73.106µs

转载于:https://www.cnblogs.com/xiaozhi007/p/7642687.html

你可能感兴趣的文章
数据库设计中的14个技巧
查看>>
Android学习系列(5)--App布局初探之简单模型
查看>>
git回退到某个历史版本
查看>>
ecshop
查看>>
HTML5基础(二)
查看>>
在GCE上安装Apache、tomcat等
查看>>
在Mac 系统下进行文件的显示和隐藏
查看>>
ue4(c++) 按钮中的文字居中的问题
查看>>
技能点
查看>>
读书笔记《乌合之众》
查看>>
Hadoop日记Day1---Hadoop介绍
查看>>
iOS 学习资料汇总
查看>>
centos7 yum安装jdk
查看>>
Bluedroid与BluZ,蓝牙测试方法的变动(基于bludroid和BlueZ的对比)
查看>>
接口和抽象类有什么区别
查看>>
Linux 下添加用户,修改权限
查看>>
请问view controller scene,该如何删除
查看>>
bootstrap新闻模块样式模板
查看>>
zzzzw_在线考试系统①准备篇
查看>>
App Store 审核被拒的23个理由
查看>>