[Golang] string类型和其他类型的值的互转

问题

由于在开发过程中遇到类型转换问题,比如在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可以转为什么类型。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/381535.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pandas 根据单号分类_由 “猫捉老鼠”游戏联想的用户分类问题

一、说在最前 用户识别,用户分类,精准营销…这是咱们业务人员常常念叨的话。底层逻辑为无论任何营销目的,在营销手段上,越针对某一细化群体,达成目的的概率也就会越大。那今天就来和大家说道说道用户识别/分类的一种方…

python解释器环境中、用于表示上一次_文学人类学概说_尔雅文学人类学概说答案第四小节课后作业答案...

【判断题】对零星分数的统计资料,经过统计分组整理后,仍然不能发现其特点和规律。【单选题】小明一家三口在食用自制的臭豆腐后,相继出现全身乏力、头晕、头痛,继而出现视力模糊、眼睑下垂、复视、吞咽困难等症状,他们…

[Golang]slice的用法以及和数组的区别

说明 slice是go的一个语言特性,其实有点类似于cpp的vector,可变长度,可以扩展空间。今天详细看了下,做下总结。 slice本质上是一个区间,原型是[]T,大致的实现是这样的: type slice struct {first *Tlen i…

IE Firefox通用DOM

要写出在各大主流浏览器上都兼容的JS代码,就要关注他们的区别,下是IE和FF综合考虑的通用DOM! 1.document.formName.item("itemName") 问题说明:IE下,可以使用document.formName.item("itemName")或document.formName.ele…

arraylist从大到小排序_java基础算法之二叉树排序(递归)

一、二叉树介绍在计算机科学中,二叉树是每个结点最多有两个子树的树结构。二叉树由各种节点组成,如下图所示:每个节点都可以有左子节点,右子节点每一个节点都有一个值二叉树遍历:二叉树的遍历分左序,中序&a…

uvm 形式验证_IC设计职位详解之“数字验证工程师”就业必学课程

数字验证处于数字IC设计流程的前端,属于数字IC设计类岗位的一种。在IC设计中,数字验证所占的人数比重是非常多的,很多大公司,数字前端设计工程师与验证工程师的比例已经达到1:3。数字验证主要分成几种层次的验证&#…

[Golang]slice值传递存在的问题

说明 因为slice是指针类型,所以很多人会误以为其传递的是引用,所以在使用的过程中会出现一些非期望的实现。 问题 在使用append函数时,比如以下函数: func sliceModify(slice []int) {// slice[0] 88slice append(slice, 6) } …

IE8给你选择的理由

记得第一次用电脑时的情景,有点兴奋,双手不知道往哪里放,还有点局促和不安,怕不小心弄坏了它。也记得第一次上网,那个时候的上网就是用浏览器去访问在线聊天室,去和不认识的人去聊天,在网络信息…

流畅的python目录_流畅的python python 序列

内置序列 容器类型 list 、tuple和collections.deque这些序列能放入不同的类型的数据 扁平序列 str、byets、bytearray、memoryview(内存视图)和array.array(数组) 可变序列 list、bytearray、array.array、collections.deque和memoryview 不可变序列 tuple、str和bytes 可变序…

[Golang] 用interface{}实现泛型出现的问题

说明 在做一些实现的时候,碰到了一个棘手的问题,问题是这样的,向一个函数里传入slice和begin,end,返回slice[begin:end]。很明显这是一个实现泛型的问题,但是在做具体实现的时候出现问题。 问题 根据问题,很容易写下如…

dwf怎么合成一个_将ActionForm拼合成一条插入和更新语句

package chs.jhsyss.form;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.util.Date;public class Waper {public Waper(){}/*** 本方法用于将FORM对象组装成一条INSERT语句* param obj ActionForm 以及其子对象* param for…

WebHelper类

成员一:获取上下文对象: public static HttpContext GetContext() { HttpContext context HttpContext.Current; if (context null) { throw new Exception("HttpContext not found"…

关联查询数据重复怎么办_在设计数据表的时候,是一个宽表好,还是多个维度表好?...

数据仓库每张表的搭建,主要依赖于这个表在整个数据仓库中的作用和相关意义。首先要清楚这个表的存在是为了解决那些问题,什么角色使用,怎么保证使用者尽可能好的体验解决问题。从以上所提到的角度去看待问题,拆解以下几点因素&…

[Beego] [bootstrap-paginator]实现分页功能

说明 在开发中分页功能几乎是必不可少的一项功能,使用beego框架开发时,就遇到了分页功能的需求。可能是之前版本并不支持,我发现有很多自己实现的分页功能的封装,在阅读了官方源码时,我发现了分页功能的封装&#xff0…

电磁波传播相位是否会变化_相位常数β与波数k是一回事吗?

1.相位常数β与波数k先明确一点:相位常数是指传输线,而波数是指平面波。1.1. 波数k wavenumber波数k:单位长度上有多少弧度?Jun.14.2019电磁波在材料中以光速 运动:材料的磁导率:材料的介电常数in free spa…

c#获取系统时间的方法

转:http://bbs.bc-cn.net/viewthread.php?tid238469 //今天DateTime.Now.Date.ToShortDateString();//昨天,就是今天的日期减一DateTime.Now.AddDays(-1).ToShortDateString();//明天,同理,加一DateTime.Now.AddDays(1).ToShortDateString()…

用python画出叶子_太疯狂了!原来用粉笔画画,也可以这么美,简单几招教你,美到邻居羡慕嫉妒...

......点进来之前先让大家瞧瞧相信这是用粉笔画的吗?▼玫瑰花▼山茶花▼蓝色鸢尾花▼樱花树▼这一张张让人直流鼻血的作品没错这就是用色粉笔画出来的很多人问:是不是平时老师上课时用的粉笔呢?这里给大家科普下:色粉画&#xff0…

jsonp react 获取返回值_必须要会的 50 个React 面试题(下)

翻译:疯狂的技术宅原文:https://www.edureka.co/blog/interview-questions/react-interview-questions29. 你对受控组件和非受控组件了解多少?受控组件非受控组件1. 没有维持自己的状态1. 保持着自己的状态2.数据由父组件控制2.数据由 DOM 控…

ASP.Net ListBox DropdownList 不同条目 设置 背景色 和 字体颜色

转载于:https://www.cnblogs.com/sjcatsoft/archive/2008/11/08/1329787.html

[jQuery] 根据表单的不同参数跳转不同的链接

说明 在实现前端的时候,我们有些需求是这样的: 1. 需要表单来向服务端get或post参数 2. 表单数据不只一个 3. 需要根据不同的提交的数据参数、类型等信息提交到不同 思路 把请求放到后端处理是可以的,但是显然这样处理会增加系统的复杂度&…