【go语言圣经】练习2.2

练习2.2

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

代码:
utilconv.go

package utilconv

//长度
type Feet float64
type Meter float64

//重量
type Pound float64
type Kilogram float64

// FToM converts a Celsius temperature to Fahrenheit.
func FToM(f Feet) Meter { return Meter(f * 0.3048) }

// MToF converts a Fahrenheit temperature to Celsius.
func MToF(m Meter) Feet { return Feet(m / 0.3048) }

//PToK
func PToK(p Pound) Kilogram { return Kilogram(p / 2.20462) }

//KToP
func KToP(k Kilogram) Pound {
	return Pound(k * 2.20462)
}

main.go

package main

import (
	"bufio"
	"fmt"
	"os"
	"strconv"
	"strings"
	"studyTest/ch2/utilconv"
)

func main() {
	if len(os.Args) > 1 {
		for _, arg := range os.Args[1:] {
			input, err := strconv.ParseFloat(arg, 64)
			if err != nil {
				fmt.Fprintf(os.Stderr, "cf: %v\n", err)
				os.Exit(1)
			}
			m := utilconv.Meter(input)
			k := utilconv.Kilogram(input)
			fmt.Printf("%.2f m = %.2f f, %.2f kg = %.2f p\n",
				m, utilconv.MToF(m), k, utilconv.KToP(k))
		}
	} else { //这里else要接在}后面,否则会报错
		scanner := bufio.NewScanner(os.Stdin)
		var numbers []float64
		for scanner.Scan() {
			input := scanner.Text()
			if num, err := strconv.ParseFloat(strings.TrimSpace(input), 64); err == nil {
				numbers = append(numbers, num)
			} else {
				// 非浮点数输入,结束读取
				break
			}
		}
		for _, input := range numbers {
			m := utilconv.Meter(input)
			k := utilconv.Kilogram(input)
			fmt.Printf("%.2f m = %.2f f, %.2f kg = %.2f p\n",
				m, utilconv.MToF(m), k, utilconv.KToP(k))
		}
	}

运行:
命令行参数传递:
在这里插入图片描述
标准输入:
在这里插入图片描述

知识点

strconv.PraseFloat(str,64)这条语句能够使得字符串转化为64位的浮点数。

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Go语言圣经》是一本广受好评的教材,旨在帮助读者系统地学习和掌握Go语言。这本书以简明清晰的方式介绍了Go语言的各种特性、语法和用法,是入门和进阶者的理想选择。 首先,该书提供了对Go语言基础知识的全面介绍。它从简单到复杂地解释了Go语言的基本概念,诸如变量、函数、循环和条件语句等等。通过丰富的例子和练习,读者能够逐步理解和掌握这些概念。 其次,该书详细介绍了Go语言的高级特性和用法。读者可以学习到Go语言的面向对象编程、并发编程、网络编程等关键技术。并发编程是Go语言的一个独特特性,对于提高程序性能和扩展能力非常重要。 此外,该书还包含了对常见问题和陷阱的讲解,帮助读者避免一些常见的错误和陷阱。同时,书中提供了大量的案例和实践项目,读者可以通过实际操作来巩固所学内容。 《Go语言圣经》以其简洁明了的风格和对细节的深入讲解而闻名。无论是作为初学者的入门指南,还是作为有经验的开发者的参考书,这本书都能满足读者的需求。此外,该书的PDF版本能够方便地在线或离线阅读,为读者提供了更加便捷的学习体验。 综上所述,《Go语言圣经》是一本内容丰富、权威性强的优秀教材。它不仅适合Go语言的初学者,也适用于那些想要深入学习和掌握Go语言开发者。无论是在线阅读还是PDF版本,读者都能够方便地获取和利用这本宝贵的学习资源。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值