zoukankan      html  css  js  c++  java
  • [日常] Go语言*--包和文件-导入包习题

    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 
    ",pMeter,a,pFoot,b)
    
    }
    

      

  • 相关阅读:
    信息收集
    beef框架使用
    网站程序CMS识别
    查找网站后台
    下载漏洞原理及利用
    后台拿webshell方法(2)
    如何学好web安全
    TIME_WAIT过多的解决方法(转)
    sudo
    keepalived+lvs子网掩码造成VIP切换故障 + vrrp_script+track_script
  • 原文地址:https://www.cnblogs.com/taoshihan/p/8758506.html
Copyright © 2011-2022 走看看