问题

由于在开发过程中遇到类型转换问题,比如在web中某个参数是以string存在的,这个时候需要转换成其他类型,这里官方的strconv包里有这几种转换方法。

实现

有两个函数可以实现类型的互转(以int转string为例)
1. FormatInt (int64,base int)string
2. Itoa(int)string
打开strconv包可以发现Itoa的实现方式如下:

// Itoa is shorthand for FormatInt(int64(i), 10).
func Itoa(i int) string {return FormatInt(int64(i), 10)
}

也就是说itoa其实是更便捷版的FormatInt,以此类推,其他的实现也类似的。

示例

  • int 和string 互转
//int 转化为string
s := strconv.Itoa(i)
s := strconv.FormatInt(int64(i), 10) //强制转化为int64后使用FormatInt//string 转为int
i, err := strconv.Atoi(s) 
  • int64 和 string 互转
//int64 转 string,第二个参数为基数
s := strconv.FormatInt(i64, 10)
// string 转换为 int64
//第二参数为基数,后面为位数,可以转换为int32,int64等
i64, err := strconv.ParseInt(s, 10, 64) 
  • float 和 string 互转
// flaot 转为string 最后一位是位数设置float32或float64
s1 := strconv.FormatFloat(v, 'E', -1, 32)
//string 转 float 同样最后一位设置位数
v, err := strconv.ParseFloat(s, 32)
v, err := strconv.atof32(s)
  • bool 和 string 互转
// ParseBool returns the boolean value represented by the string.
// It accepts 1, t, T, TRUE, true, True, 0, f, F, FALSE, false, False.
// Any other value returns an error.
func ParseBool(str string) (bool, error) {switch str {case "1", "t", "T", "true", "TRUE", "True":return true, nilcase "0", "f", "F", "false", "FALSE", "False":return false, nil}return false, syntaxError("ParseBool", str)
}// FormatBool returns "true" or "false" according to the value of b
func FormatBool(b bool) string {if b {return "true"}return "false"
}//上面是官方实现,不难发现字符串t,true,1都是真值。
//对应转换:
b, err := strconv.ParseBool("true") // string 转bool
s := strconv.FormatBool(true) // bool 转string
  • interface转其他类型
    有时候返回值是interface类型的,直接赋值是无法转化的。
var a interface{}
var b string
a = "123"
b = a.(string)

通过a.(string) 转化为string,通过v.(int)转化为类型。
可以通过a.(type)来判断a可以转为什么类型。

[Golang] string类型和其他类型的值的互转相关推荐

  1. Java中,String类型和包装类型作为参数传递时,是属于值传递还是引用传递呢?...

    <Java中,String类型和包装类型作为参数传递时,是属于值传递还是引用传递呢?> <Java中的值传递和引用传递> 原理知识: 如果参数类型是原始类型,那么传过来的就是这 ...

  2. 将String类型的带小数的值转化为Integer类型的不带小数的值

    在我们的开发过程中,经常会遇到有的String类型的带小数的值要求转化为Integer类型的不带小数的值,这时候我们有的转化就会出问题.这里,我们应用这样的方法来进行转化: 带小数的String转数字 ...

  3. php 函数返回值mixed,认识函数的类型、参数与返回值

    函数的类型.参数与返回值 一.函数的基本语法语法 functionfunctionName(类型限定参数列表):返回值类型 { } 案例:计算两个数之和. functionsum(int$a,int$ ...

  4. Spring MVC控制层的返回类型--String类型与Bean类型

    SpringMVC控制层的返回类型形式多样,现拿其中的两种--String类型与Bean类型作以说明. 一.测试项目的结构 说明:(jsp的名字没起好) 控制层:UserController.java ...

  5. 返回值类型与函数类型不匹配_golang基础语法,定义函数类型 为已存在的数据类型起别名...

    简介 在 GO 语言中还有另外一种定义使用函数的方式,就是函数类型,所谓的函数类型就是将函数作为一种类型可以用来定义变量,这种用法类似于前面我们讲过的 int ,float64,string 等类型, ...

  6. (Redis_学习一)Redis关于string类型和hash类型数据操作

    Redis关于string类型和hash类型数据操作 set name xiaohongyang // get name setnx name xiaohy get name setex name 1 ...

  7. Redis源码-String:Redis String命令、Redis String存储原理、Redis String三种编码类型、Redis字符串SDS源码解析、Redis String应用场景

    Redis源码-String:Redis String命令.Redis String存储原理.Redis String三种编码类型.Redis字符串SDS源码解析.Redis String应用场景 R ...

  8. Java中String是个什么类型?

    Java中String是个什么类型 Java中的八大基本数据类型 String 是个什么类型 String常见的方法 Java中的八大基本数据类型 面试官的套路 Java中的数据类型分为四类 1.整型 ...

  9. 尹成学院golang学习快速笔记(1)类型

    1.1 变量 Go 是静态类型语⾔,不能在运⾏期改变变量类型. 使⽤关键字 var 定义变量,⾃动初始化为零值.如果提供初始化值,可省略变量类型,由 编译器⾃动推断. var x int var f ...

最新文章

  1. 【OpenCV 】直方图均衡化,直方图计算,直方图对比
  2. 好消息!算法工程师提高待遇的好机会,终于来了!!
  3. 负数对2取余_不同语言的负数取余问题
  4. Java高并发编程:使用JDK5中同步技术的3个面试题
  5. 【jetson nano】 aarch64安装pycharm pytorch cuda
  6. hive left outer join 子查询临时表_基于历史数据的用户访问次数,每天新老用户,日活,周活,月活的hive计算...
  7. 大龄开发者究竟该何去何从?2019年Python全栈工程师,都是开发人员改怎么转向高收入?
  8. Java进阶:SpringMVC拦截器
  9. 决策树人工智能预测模型_部署和服务AI模型进行预测的10种方法
  10. Python编写微信打飞机小游戏(一)
  11. 大嘴首发J2EE框架,Bigmouth-framework你值得拥有!
  12. RS232 RS485 串口 电平标准
  13. 怎样绘制漂亮的统计图表|不一样的折线图
  14. Ubuntu虚拟机如何与主机复制粘贴?
  15. JavaScript -- Map数据结构
  16. 张艾迪(创始人):世界第一天才的故事
  17. linux查找最近新增的大文件
  18. 《无极限之危情速递》观后感
  19. 核酸检测软件开发方案(软件工程作业)
  20. Python——使用OGR操作矢量数据

热门文章

  1. bind函数polyfill源码解析
  2. nyoj 55 懒省事的小明 优先队列 multiset 还有暴力
  3. 网格布局之网格元素放置算法
  4. 让element-ui的输入框聚焦的4种方式
  5. Python3.5-20190501-廖老师的
  6. WIN10 开启右键 命令提示符
  7. C#中结构体定义并转换字节数组
  8. Best Time to Buy and Sell Stock with Cooldown
  9. $ npm install opencv ? 你试试?! 在windows环境下,使用node.js调用opencv攻略
  10. echo 12345678 | base64 产生的结果跟12345678真正的base64编码不对