Go 实现英尺和米的简单单位换算方式

看代码吧~

package main
import (
    "fmt"
    "os"
    "strconv"
)

type Feet float64
type Meter float64

func main() {
    var transType string = os.Args[2]
    var transferObject string = os.Args[1]
    parseObj, _ := strconv.ParseFloat(transferObject, 64)

    if transType == "feet" {
        // transfer to meter
        fmt.Println(toFeet(Meter(parseObj)))
    } else {
        fmt.Println(toMeter(Feet(parseObj)))
    }
} 

func toMeter(feet Feet) Meter {
    return Meter(feet * 0.3048)
}

func toFeet(meter Meter) Feet {
    return Feet(meter * 1 / 0.3048)
}
// 保存后 go run test.go 1 feet 输出1米=多少英尺

补充:golang go语言中 对文件大小字节单位的换算 EB TB GB MB KB B 保留小数

看代码吧~

// 字节的单位转换 保留两位小数
func formatFileSize(fileSize int64) (size string) {
   if fileSize < 1024 {
      //return strconv.FormatInt(fileSize, 10) + "B"
      return fmt.Sprintf("%.2fB", float64(fileSize)/float64(1))
   } else if fileSize < (1024 * 1024) {
      return fmt.Sprintf("%.2fKB", float64(fileSize)/float64(1024))
   } else if fileSize < (1024 * 1024 * 1024) {
      return fmt.Sprintf("%.2fMB", float64(fileSize)/float64(1024*1024))
   } else if fileSize < (1024 * 1024 * 1024 * 1024) {
      return fmt.Sprintf("%.2fGB", float64(fileSize)/float64(1024*1024*1024))
   } else if fileSize < (1024 * 1024 * 1024 * 1024 * 1024) {
      return fmt.Sprintf("%.2fTB", float64(fileSize)/float64(1024*1024*1024*1024))
   } else { //if fileSize < (1024 * 1024 * 1024 * 1024 * 1024 * 1024)
      return fmt.Sprintf("%.2fEB", float64(fileSize)/float64(1024*1024*1024*1024*1024))
   }
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

(0)

相关推荐

  • Go语言的Channel遍历方法详解

    先来看看基本的定义: channel是Go语言中的一个核心类型,可以把它看成管道.并发核心单元通过它就可以发送或者接收数据进行通讯,这在一定程度上又进一步降低了编程的难度. channel是一个数据类型,主要用来解决go程的同步问题以及协程之间数据共享(数据传递)的问题. (1)channle 本质上是一个数据结构--(队列),数据是先进先出. (2)具有线程安全机制,多个go程访问时,不需要枷锁,也就是说channel本身是线程安全的. (3)channel是有类型的,如一个string类型的

  • golang 函数返回chan类型的操作

    在阅读kafka的golang 客户端代码sarama-cluster时,遇到了如下一段代码: // Messages returns the read channel for the messages that are returned by // the broker. // // This channel will only return if Config.Group.Mode option is set to // ConsumerModeMultiplex (default). fu

  • Golang 拷贝Array或Slice的操作

    Golang中Array是值类型而slice是引用类型.因此两者之间的赋值或拷贝有些差异,本文带你了解各自的差异. 1. 拷贝array 前面提及数组是值类型,所以数组变量名不是指向第一个元素的指针.事实上它表示整个数组,下面两者情况将自动创建数组: 数组变量赋值给另一个数组变量 数组变量传递作为函数参数 请看示例: package main import "fmt" func main() { sample1 := [2]string{"a", "b&q

  • 基于Go Int转string几种方式性能测试

    Go语言内置int转string至少有3种方式: fmt.Sprintf("%d",n) strconv.Itoa(n) strconv.FormatInt(n,10) 下面针对这3中方式的性能做一下简单的测试: package gotest import ( "fmt" "strconv" "testing" ) func BenchmarkSprintf(b *testing.B) { n := 10 b.ResetTim

  • Golang 空map和未初始化map的注意事项说明

    可以对未初始化的map进行取值,但取出来的东西是空: var m1 map[string]string fmt.Println(m1["1"]) 不能对未初始化的map进行赋值,这样将会抛出一个异常: panic: assignment to entry in nil map var m1 map[string]string m1["1"] = "1" 通过fmt打印map时,空map和nil map结果是一样的,都为map[].所以,这个时候别

  • Go语言中break label与goto label的区别

    与其他语言一样,Go语言也支持label(标签)语法: 分别是break label和 goto label 这样使得编程时变得异常灵活,但是由于在大项目中不好控制,所以建议能不使用goto label就不要使用 break label 和 goto label都能在循环中跳出循环,但是又有些不同之处. 首先说下break label,break的跳转标签(label)必须放在循环语句for前面,并且在break label跳出循环不再执行for循环里的代码. 当我们把标签定义在break的下面

  • Go 实现英尺和米的简单单位换算方式

    看代码吧~ package main import ( "fmt" "os" "strconv" ) type Feet float64 type Meter float64 func main() { var transType string = os.Args[2] var transferObject string = os.Args[1] parseObj, _ := strconv.ParseFloat(transferObject,

  • C#实现单位换算器

    本文实例为大家分享了C#实现单位换算器的具体代码,供大家参考,具体内容如下 一.阐述 进制间转换:十六进制.十进制.八进制.二进制.长度间转换:毫米.厘米.米.公里.英寸.英尺.码.面积间转换:平方毫米.平方厘米.平方米.平方公里.平方英寸.平方英尺.平方码.体积间转换:立方毫米.毫升.升.立方米.立方英寸.立方英尺.立方码. 二.效果 1. 进制转换 通过输入即可转换为另一个进制值. 2. 长度转换 用户输入进行单位换算,可从目标中选择需求单位. 选中需求后,输入框解除只读,输入即可进行换算.

  • Java实现单位换算功能

    本文实例为大家分享了Java实现单位换算功能的具体代码,供大家参考,具体内容如下 使用枚举进行简单计算 只加入了一些简单常用的单位,如有需要自行添加,以标准单位为基准 package com.dessert.common.enu; import org.apache.commons.lang3.StringUtils; import java.math.BigDecimal; public class UnitConversion {     /**      * 默认保留两位小数,四舍五入  

  • 正则表达式创建方式的区别及编写简单的正则方式(js学习总结)

    在字面量方式中,我们//之间包起来的所有的内容都是元字符,有的具有特殊意义,大部分都是代表本身含义的普通的元字符 var name = 'wo'; var reg = /^\d+"+name+"\d+$/ 为了解决上述想在正则里面加上一个变量这样的需求,我们只能使用实例创建的方式了 var reg = new RegExp("^\\d+"+name+"\\d+$","g") 字面量方式和实例创建的方式在正则中的区别? 1.字面

  • javascript实现的平方米、亩、公顷单位换算小程序

    javascript实现平方米,亩,公顷单位换算,可以通过url传递参数指定输入框的值为任何中单位的值. 源代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xht

  • Python简单实现区域生长方式

    区域生长是一种串行区域分割的图像分割方法.区域生长是指从某个像素出发,按照一定的准则,逐步加入邻近像素,当满足一定的条件时,区域生长终止.区域生长的好坏决定于1.初始点(种子点)的选取.2.生长准则.3.终止条件.区域生长是从某个或者某些像素点出发,最后得到整个区域,进而实现目标的提取. 区域生长的原理:   区域生长的基本思想是将具有相似性质的像素集合起来构成区域.具体先对每个需要分割的区域找一个种子像素作为生长起点,然后将种子像素和周围邻域中与种子像素有相同或相似性质的像素(根据某种事先确定

  • Spring更简单的存储方式与获取方式详解

    目录 存储方式(注解) @Controller @Service @Repository @Configuration @Component 方法注解@Bean 重命名bean 五大注解之间的关系 从Spring中获取对象 @Autowired 注入注解 三种注入的优缺点 @Resource @Autowired和@Resource的区别 总结 存储方式(注解) 使用注解的方式存储业务对象到Spring中会更简单 1.配置spring.xml设置spring存入对象的根路径 ,目的是让Sprin

  • springboot 多数据源的实现(最简单的整合方式)

    简介 相信大家有配置过多数据源,或者即将配置多数据的朋友们,会发现网上大概有以下几种方案: 1. 使用 AOP 切片进行动态数据源切换 2. 使用 MapperScan 的 basePackages 配置不同的 mapper 目录以及 template 3. 数据库代理中间件 这两种方式都能实现多数据源但是各有缺点: 1. 无法实现多数据源 XA 事物(全局事物管理 |JTA)这个缺点非常致命,配了多数据源但是没有全局事物那有什么用纯属坑爹,网上还有很多帖子教程使用这种虽然配置稍微简单但是如果你

  • python简单爬虫--get方式详解

    目录 环境准备 进行爬虫 参考 总结 简单爬虫可以划分为get.post格式.其中,get是单方面的获取资源,而post存在交互,如翻译中需要文字输入.本文主要描述简单的get爬虫. 环境准备 安装第三方库 pip install requests pip install bs4 pip install lxml 进行爬虫 1.获取网页数据. import requests from bs4 import BeautifulSoup url = "https://cn.bing.com/sear

  • java实现简单的webservice方式

    本文实例为大家分享了java实现webservice方式的具体代码,供大家参考,具体内容如下 经过测试 jdk1.6.10以下会出现bug 建议使用10以上版本 1.定义接口 package org.enson.chan; import javax.jws.WebService; import javax.jws.soap.SOAPBinding; @WebService @SOAPBinding(style=SOAPBinding.Style.RPC) public interface IMy

随机推荐