加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

[日常] Go语言圣经--包和文件-导入包习题

发布时间:2020-12-16 19:35:54 所属栏目:大数据 来源:网络整理
导读:1.每个包都有一个全局唯一的导入路径 2.按照惯例,一个包的名字和包的导入路径的最后一个字段相同 练习 2.2: 写一个通用的单位转换程序,用类似cf程序的方式从命令行读取参数,如果缺省的话则是从标准输入读取参数,然后做类似Celsius和Fahrenheit的单位转

1.每个包都有一个全局唯一的导入路径

2.按照惯例,一个包的名字和包的导入路径的最后一个字段相同

练习 2.2: 写一个通用的单位转换程序,用类似cf程序的方式从命令行读取参数,如果缺省的话则是从标准输入读取参数,然后做类似Celsius和Fahrenheit的单位转换,长度单位可以对应英尺和米,重量单位可以对应磅和公斤等。

1.创建目录mkdir /home/ubuntu/gobook/src/unitconv/

2.目录下创建包源文件unitconv.go

包文件unitconv.go

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

单位可以对应英尺和米,重量单位可以对应磅和公斤等。 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)

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读