go 程序设计语言 命令行参数
最近打算读一读 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 main
import (
"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 main
import (
"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
go 程序设计语言 命令行参数的更多相关文章
- 【嵌入式开发】C语言 命令行参数 函数指针 gdb调试
. 作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/21551397 | http://www.hanshul ...
- C语言 命令行参数 函数指针 gdb调试
. 作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/21551397 | http://www.hanshul ...
- c语言命令行参数
int main(int argc, char * argv[]) { ..... } argc: 代表启动程序时,命令行参数的个数.C和C++语言规定,可执行程序程序本身的文件名,也算是一个命令行参 ...
- 关于C语言命令行参数问题
1 int main(int argc,char** argv) 参数: argc:命令行参数的个数 argv:保存命令行参数:argv[0]保存本程序自己的名称 现在自己只知道这些以后再有学习继续补 ...
- R 语言命令行参数处理
在unix.windows外部需要调用R脚本执行,然后又需要输入不同的参数,类似shell脚本的命令行参数输入,可以使用Rcript命令实现. 命令格式:Rscript [options] [-e e ...
- R语言命令行参数
批量画图任务中,需要在R中传入若干参数,之前对做法是在perl中每一个任务建立一个Rscript,这种方式超级不cool,在群里学习到R的@ARGV调用方式,差不多能够达到批量任务的要求: a ...
- 我也要学C语言-第十九章:命令行参数
C语言的语法规定main函数是带连个参数的,因为当初是考虑是在控制台下写程序.于是用户可以给参数微控程序.其实现在的WINDOWS程序也可以带参数.一般正规军写的应该程序一般都带命令行参数,帮助文档, ...
- go语言之行--文件操作、命令行参数、序列化与反序列化详解
一.简介 文件操作对于我们来说也是非常常用的,在python中使用open函数来对文件进行操作,而在go语言中我们使用os.File对文件进行操作. 二.终端读写 操作终端句柄常量 os.Stdin: ...
- [日常] Go语言圣经-命令行参数
1.编译 go build hello.go 2.go get gopl.io/ch1/helloworld 命令,就会从网上获取代码,并放到对应目录中 下载的代码会放在$GOPATH/src/gop ...
- 《Java 程序设计》课堂实践项目-命令行参数
<Java 程序设计>课堂实践项目 课后学习总结 目录 改变 命令行参数实验要求 课堂实践成果 课后思考 改变 修改了博客整体布局,过去就贴个代码贴个图很草率,这次布局和内容都有修改.加了 ...
随机推荐
- [生命科学] 生物基础实验之PCR验证
生物基础实验之PCR验证 文章目录 生物基础实验之PCR验证 实验步骤一 实验步骤二 实验步骤三 配胶 实验步骤四 电泳 实验步骤五 跑胶 实验步骤一 在离心管加入7.5μL Master Mix 溶 ...
- B站地区限制破解方法
B站地区限制破解方法 当我们观看bilibili番剧时,经常会看到"仅限港澳台地区"的字样.那么,有没有一种方法,不需要挂梯子,就可以观看这些被限制的番剧呢? 本教程只适用于bil ...
- 一问读懂Web3 架构
最近看了一些Web3.0的文章,总结了一些个人的理解: Web3.0 通过区块链基础设施管理用户数据,重构用户和互联网平台之间的关系和交互,重新定义了互联网应用的架构方式和交互模式. Web 1.0 ...
- Apache Kafka 的基本概念
基本概念 主题 Topic topic 是 Kafka 最基础的组织单位,类似于关系数据库中的数据表.做为使用 kafka 的开发者,你最应该考虑的是和 topoc 相关的抽象.创建不同的 topic ...
- 深入Typescript--01-使用roolup编译Typescript
Typescript是什么? TypeScript是Javascript的超集,遵循最新的ES5/ES6规范.Typescript扩展了Javascript语法. 为什么要用Typescript? 1 ...
- Flutter2.X学习之路--调试页面布局好用的办法
Flutter里有个很好用的东西,可以方便我们来进行页面组件的布局调试,话不多说,上代码 1.找到main.dart引入rendering.dart import 'package:flutter/r ...
- (23)go-micro微服务客户端开发(使用负载均衡)
目录 一 main.go开发 二 客户端代码开发: 三 客户端测试功能 1.发送注册邮件 2.实现注册功能 3.查询用户功能 四 运行项目 五 最后 一 main.go开发 至此,咱们的项目服务端代码 ...
- 写出单个字符到文件-flush方法和close方法的区别
写出单个字符到文件 flush方法和close方法的区别 因为内置缓冲区的原因,如果不关闭输出流,无法写出字符到文件中.但是关闭的流对象,是无法继续写出数据的.如果我们既想写出数据,又想继续使用流,就 ...
- 函数式编程思想概述-冗余的Runnable代码
函数式编程思想概述 在数学中,函数就是有输入量.输出星的一套计算方案,也就是"拿什么东西做什么事情".相对而言,面向对象过分强调"必须通过对象的形式来做事情", ...
- 初探富文本之CRDT协同算法
初探富文本之CRDT协同算法 CRDT的英文全称是Conflict-free Replicated Data Type,最初是由协同文本编辑和移动计算而发展的,现在还被用作在线聊天系统.音频分发平台等 ...