- 前言
- Go 与操作系统
- Go 内部机制
- Go 基本数据类型
- 4 组合类型的使用
- 5 数据结构
- 6 Go package 中不为人知的知识
- 7 反射和接口
- 8 Go UNIX 系统编程
- 08.1 关于 UNIX 进程
- 08.2 flag 包
- 8.2 flag 包
- 08.3 io.Reader 和 io.Writer 接口
- 08.4 bufio 包
- 08.5 读取文本文件
- 08.6 从文件中读取所需的数据量
- 08.7 为什么我们使用二进制格式
- 08.8 读取 CSV 文件
- 08.9 写入文件
- 08.10 从磁盘加载和保存数据
- 08.11 再看strings包
- 08.12 关于bytes包
- 08.13 文件权限
- 08.14 处理 Unix 信号
- 08.15 Unix 管道编程
- 08.16 遍历目录树
- 08.17 使用 ePBF
- 08.18 关于 syscall.PtraceRegs
- 08.19 跟踪系统调用
- 08.20 User ID 和 group ID
- 08.21 其他资源
- 08.22 练习
- 08.23 总结
- 9 并发 Goroutines、Channel 和 Pipeline
- 10 Go 并发-进阶讨论
- 11 代码测试、优化及分析
- 12 Go 网络编程基础
- 13 网络编程 - 构建服务器与客户端
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
03.7.2 解析时间的代码示例
本节将介绍parseTime.go
,这段代码接收一个命令行参数,并将其由string
类型转换成time
类型。该代码分为三部分,仅是为了演示time.Parse()
,可能会因为你的输入格式不正确而报错。
第一部分:
> package main
>
> import (
> "fmt"
> "os"
> "path/filepath"
> "time"
> )
第二部分:
> func main() {
> var myTime string
>
> if len(os.Args) != 2 {
> fmt.Printf("Usage: %s string\n",
> filepath.Base(os.Args[0]))
> os.Exit(0)
> }
>
> myTime = os.Args[1]
最后一部分是展现神奇的代码:
> d,err := time.Parse("15:04",myTime)
> if err == nil {
> fmt.Println("Full",d)
> fmt.Println("Time", d.Hour(), d.Minute())
> } else {
> fmt.Println(err)
> }
> }
可以看到,为了解析一个包含小时和分钟的字符串,你需要使用常量来构建格式"15:04"。返回值err
能够告诉你我们的解析是否成功。
执行parseTime.go
后我们得到:
$ go run parseTime.go
usage: parseTime string
exit status 1
$ go run parseTime.go 12:10
Full 0000-01-01 12:10:00 +0000 UTC Time 12 10
可以看到Go将整个时间(Full 0000-01-01 12:10:00 +0000 UTC)都打印出来了,这是因为time.Parse()
返回值是时间类型的变量。如果你只关心具体时间而不是日期,你应该只打印你关心的time
变量部分。
如果你没有按照Go规定的时间常量来格式化你的字符串,例如使用22:04
作为第一个参数,你就会得到下面的错误信息:
$ go run parseTime.go
parsing time "12:10" as "22:04" : cannot parse ":10" as "2"
或者,如果你使用了用来处理月份的11
来格式化,可能得到下面的错误信息:
$ go run parseTime.go 12:10
parsing time "12:10": month out of range
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论