zl程序教程

您现在的位置是:首页 >  后端

当前栏目

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) 

Go语言圣经--包和文件-导入包习题详解编程语言

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/12555.html

cgo