Go教程:23 string转换int类型方法对比

Go语言时一个强类型的语言,但是强类型的语言有也强类型的语言的烦恼.这个烦恼就是类型转换,

接下来我们就讲解一下怎么把 string 类型变量转换成 integer 类型变量.

1. 性能最佳的方式: strconv.ParseInt(…)

strconv 包实现了字符串与数字(整数,浮点数等)之间的互相转换.

strconv.ParseInt()的bitSize参数不会将字符串转换为您选择的类型,

而只是在此处将结果限制为特定的“位”,如果想要得到您要的int类型必须手动转换类型.

转换成十进制int64strconv.ParseInt("2345",10,64)

转换成八进制int32strconv.ParseInt("0xFF",0,32)

转换成16进制int64strconv.ParseInt("FF",16,64)

packagemainimport("fmt""strconv")funcmain(){fmt.Println(strconv.ParseInt("-12",10,0))// -12 fmt.Println(strconv.ParseInt("0xFF",0,0))// 255 fmt.Println(strconv.ParseInt("FF",16,0))// 255 fmt.Println(strconv.ParseUint("12",10,0))// 12 fmt.Println(strconv.ParseInt("0xFF",10,0))// 0 strconv.ParseInt: parsing "0xFF": invalid syntaxfmt.Println(strconv.ParseUint("-12",10,0))// 0 strconv.ParseUint: parsing "-12": invalid syntax}

输结果

-12

255

255

12

0 strconv.ParseInt: parsing "0xFF": invalid syntax

0 strconv.ParseUint: parsing "-12": invalid syntax

2. 最灵活性的方法: fmt.Sscanf(…)

fmt.Sscanf为格式字符串提供了更大的灵活性,

您可以在输入中指定数字格式(例如宽度,基数等)以及其他额外的字符string,

这对于解析包含数字的自定义字符串非常有用,例如,如果以”id:00123”您有前缀的形式提供输入,

“id:”并且数字固定为5位数字,如果较短则用零填充,这很容易解析,如下所示:

s:="id:00123"variintif_,err:=fmt.Sscanf(s,"id:%5d",&i);err==nil{fmt.Println(i)// Outputs 123}

3. 性能还行的方法: strconv.Atoi(…)

strconv 包实现了字符串与数字(整数,浮点数等)之间的互相转换.

很多朋友都不知道Atoi代表什么意思, A 就是ASCII, i就是integer,所以Atoi= ASCII to integer.

ItoA= Integer to ASCII.

实际上strconv.Atoi 还是调用 strconv.ParseInt

packagemain//xiaorui.ccimport("strconv")funcmain(){i,err:=strconv.Atoi("8888")iferr!=nil{panic(err)}i+=3println(i)s:=strconv.Itoa(333)s+="3"println(s)}

4. 三种方法benchmark

atoi_test.go

packagemainimport"fmt"import"strconv"import"testing"varnum=8568452varnumstr="8568452"//测试 strconv.ParseIntfuncBenchmarkStrconvParseInt(b*testing.B){num64:=int64(num)fori:=0;i

执行benchmark: go test -bench=. atoi_test.go

ns/op 代表每次操作消耗多少纳秒.

BenchmarkStrconvParseInt-810000000017.1ns/opBenchmarkAtoi-810000000019.4ns/opBenchmarkFmtSscan-82000000693ns/opPASSokcommand-line-arguments5.797s

golang string转int8_Go教程:23 string转换int类型方法对比相关推荐

  1. java 转换int类型数值到对应的金额大写

    看到一个将时间复杂度的文件,说来说去,按数组下标的访问方法才是最快的 ,当然按照这个原理还可以用来生成随机密码 之类 等等 package com.tx.myt5;import java.util.S ...

  2. java float强制转换int类型_float型怎样强制转换成int型

    展开全部 运行时所有数据都存储在内存中,32313133353236313431303231363533e4b893e5b19e31333436316236所以相同很正常,float转int会将小数后 ...

  3. android 颜色值16进制转换int类型;

    int color=Color.parseColor(#3686FD)textView.setTextColor(color);

  4. HINSTANCE 转换 int 正确方法(C++)

    int code = reinterpret_cast<int>(hInstApp) //其中hInstApp 为 HINSTANCE 类型. 用于ShellExecuteEx ,并且设置 ...

  5. golang struct 转map 及 map[string]*Struct 初始化和遍历

    package mainimport ("encoding/json""errors""fmt""reflect"&qu ...

  6. java object数组转实体类_详解Java中String JSONObject JSONArray List实体类转换

    JSON使用阿里的fastJson为依赖包 gradle依赖管理如下: compile group: "com.alibaba", name: "fastjson&quo ...

  7. CString与string、char*的区别和转换

    我们在C++的开发中经常会碰到string.char*以及CString,这三种都表示字符串类型,有很多相似又不同的地方,常常让人混淆.下面详细介绍这三者的区别.联系和转换: 各自的区别 char*: ...

  8. Go语言基础(四)—String与其他基本数据类型的转换

    Go语言中,不同类型的变量之间不能自动转换,需要显式转换,这与Java和C都有区别 var i int32 =100 var n1 float32 = float(i) //将int32转换为floa ...

  9. Java教程:Java String字符串和整型int的相互转换

    Java教程String 在编程中被广泛使用,所以掌握 String 和 int 的相互转换方法是极其重要的.本节前面部分主要讲解了 String 转换 int 和 int 转换 String 方法, ...

最新文章

  1. Boostrap技能点整理之【bootstrap简介】
  2. 自定义日历控android,Android自定义日历Calender代码实现
  3. WinAPI: 钩子回调函数之 CallWndProcRetProc
  4. 浅谈SaaS应用开发的难度
  5. -Android的发展webservice-号码归属地查询
  6. shell基础之更改IP
  7. Android 通过baidu借口 获得移动基站方法
  8. mysql汪晓青课后答案_MySQL数据库基础实例教程
  9. 关于idea注释等颜色设置
  10. 基于DEAP库的NSGA2代码详解
  11. 将SpringBoot项目打包并部署到服务器
  12. java 字符长度判断_java判断中文字符串长度的简单实例
  13. 球面坐标系转换为笛卡尔坐标系
  14. Java去除空格符号
  15. Android Weekly #33 :这个世界的问题,在于聪明人充满疑惑,而傻子们坚信不疑
  16. Android Studio ---------------- 软件使用小细节(更新中。。。。。。)
  17. 【Python】用字母生成图像
  18. 乡镇卫生院计算机编制待遇怎么样,三甲医院VS乡镇卫生院事业编,选哪个?
  19. 九连环课程设计c语言,用C语言编程解九连环
  20. 华为智能汽车产业研究与投资机会分析

热门文章

  1. 17 | 五险一金到底有什么用?被忽视的个人利益
  2. 计算机科学与技术军训,计算机科学与技术学院召开2018级新生军训动员大会
  3. 为什么打印还要另存为_为什么打印机一打印就会出现另存为
  4. Spring IOC(一):概述
  5. x64dbg 自带脚本系统
  6. 新冠无情人间有情,欣隆农业保民生共抗疫——慰问抗疫一线及爱老助困送欣隆酵醒鸡蛋蔬菜进社区公益行动
  7. vue框架中,图片应该保存在哪里?应该如何访问?
  8. 汽车外饰胶市场现状及未来发展趋势
  9. java timezone id_java – 从SimpleTimeZone获取ZoneId
  10. 推荐一款个人资料管理软件(免费,Wizknowledge)