Go语言圣经–包和文件-导入包习题详解编程语言
2023-06-13 09:20:37 时间
1.每个包都有一个全局唯一的导入路径
2.按照惯例,一个包的名字和包的导入路径的最后一个字段相同
练习 2.2: 写一个通用的单位转换程序,用类似cf程序的方式从命令行读取参数,如果缺省的话则是从标准输入读取参数,然后做类似Celsius和Fahrenheit的单位转换,长度单位可以对应英尺和米,重量单位可以对应磅和公斤等。
1.创建目录mkdir /home/ubuntu/gobook/src/unitconv/
2.目录下创建包源文件unitconv.go
包文件unitconv.go
package unitconv import( "fmt" //定义类型 type Foot float64 type Meter float64 米转换成英尺 func MtoF(m Meter) Foot{ m = m/0.3048 return Foot(m) 英尺转换成米 func FtoM(f Foot) Meter{ f *= 0.3048 return Meter(f) 类型的String方法 func (f Foot)String() string{ return fmt.Sprintf("%gft",f) 类型的String方法 func (m Meter)String() string{ return fmt.Sprintf("%gm",m)
主程序unit.go
package main import( "unitconv" "fmt" "strconv" "os" "bufio" func main(){ //练习 2.2: 写一个通用的单位转换程序,用类似cf程序的方式从命令行读取参数,如果缺省的话则是从标准输入读取参数,然后做类似Celsius和Fahrenheit的单位转换,长度 单位可以对应英尺和米,重量单位可以对应磅和公斤等。 flag := 0//定义一个标志位 for _,v := range os.Args[1:]{ if v!=""{ flag=1//标志位 conv(v) //fmt.Println(v) //判断是否有命令行传参 if flag!=0{ return //从标准输入读 fmt.Print("请输入数字:") input := bufio.NewScanner(os.Stdin) input.Scan() unitStr := input.Text() conv(unitStr) 转换函数 func conv(pa string) { p,_ := strconv.ParseFloat(pa,64) //显式类型转换 pMeter := unitconv.Meter(p) pFoot := unitconv.Foot(p) a := unitconv.MtoF(pMeter) b := unitconv.FtoM(pFoot) fmt.Printf("%s = %s ; %s = %s /n",pMeter,a,pFoot,b)
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/12555.html
cgo相关文章
- Go 编程 | 连载 09 - 条件和循环表达式
- go语言下载及安装「建议收藏」
- 如何优雅的通过Shell脚本一键部署GO项目到服务器 |Go主题月
- Go 语言内存逃逸案例
- 「Go工具箱」web中想做到cookie值安全?securecookie库的使用和实现原理
- go语言学习之接口与动态类型
- 腾讯云cos获取文件操作实践--Go SDK
- 「Go工具箱」一个简单、易用的多错误管理包:go-multierror
- GO语言开篇-Go语言急速入门(基础知识点)| 青训营笔记
- Go 模块 verifying xxx/go.mod: checksum mismatch 问题处理
- Go-包管理-go get(二)
- Go-包管理-go install
- 在Linux上安装Go语言开发包
- Go语言反射规则浅析
- Go基础–终端操作和文件操作详解编程语言
- go语言之行–文件操作、命令行参数、序列化与反序列化详解编程语言
- Go语言圣经–结构体,JSON习题详解编程语言
- 解读 | TARS 开源项目发布 Go 语言版本
- 用Go语言深入Redis缓存技术(用go写redis)
- Go语言快速安装Oracle数据库(go语言安装oracle)
- 持续发烧,聊聊Dart语言的并发处理,能挑战Go不?
- Go语言并发模型的2种编程方案