golang数据类型转换(int/float/string/interface/[]byte)

2023-05-16

文章目录

  • 1. int和float转换
    • 1.1 int ==> float32/64
    • 1.2 float64/32 ==> int
  • 2. 字串和数字的转换(strconv)
    • 2.1 string ==>int
    • 2.2 string ==>int64
    • 2.3 string ==> float64
    • 2.4 int ==> string
    • 2.5 int64 ==> string
    • 2.6 float64 ==> string
  • 3 interface转换
    • 3.1 interface ==> float64
  • 4. []byte 和 string
    • 4.1 []byte ===> string
    • 4.2 string ===> []byte

1. int和float转换

1.1 int ==> float32/64

vFloat32 := float32(vInt)
vFloat64 := float64(vInt)
  • 示例
package main

import "fmt"

func main() {
   var AAA int = 17
   var BBB int = 5
   var CCC float32
   
   CCC = float32(AAA)/float32(BBB)
   fmt.Printf("CCC 的值为: %f\n",CCC)
}

说明:定义int型的 AAA /BBB ,float32型的 CCC。
CCC 计算时 给AAA和BBB转换类型为float32。

输出:

CCC 的值为: 3.400000

1.2 float64/32 ==> int

vInt := int(vFloat64)
vInt := int(vFloat32)

2. 字串和数字的转换(strconv)

2.1 string ==>int

package main

import (
	"fmt"
	"reflect"
	"strconv"
)


func main() {
	var stringA string
	intA,_:=strconv.Atoi(stringA)
	fmt.Println("intA 的数据类型是:",reflect.TypeOf(intA))
}

输出:

intA 的数据类型是: int

2.2 string ==>int64

  • 示例1

字串的值按十进制算,转换为int类型

package main

import (
	"fmt"
	"reflect"
	"strconv"
)


func main() {
	var stringA = "12"
	intA,_ := strconv.ParseInt(stringA, 10, 64)
	fmt.Println("intA 的数据类型是:",reflect.TypeOf(intA),"值为:",intA)
}

输出

intA 的数据类型是: int64 值为: 12

说明:
strconv.ParseInt()中第二个参数是字串值按多少进制算。
如示例中10 ,只得是字串按10进制计。

  • 示例2

如果字串的值是16进制算,转换为int格式

package main

import (
	"fmt"
	"reflect"
	"strconv"
)


func main() {
	var stringA = "12"
	intA,_ := strconv.ParseInt(stringA, 16, 64)
	fmt.Println("intA 的数据类型是:",reflect.TypeOf(intA),"值为:",intA)
}

2.3 string ==> float64

package main

import (
	"fmt"
	"reflect"
	"strconv"
)


func main() {
	var stringA = "12"
	float64A,_ := strconv.ParseFloat(stringA,32)
	fmt.Println("float64A 的数据类型是:",reflect.TypeOf(float64A),"值为:",float64A)
}

输出

float64A 的数据类型是: float64 值为: 12

2.4 int ==> string

package main

import (
	"fmt"
	"reflect"
	"strconv"
)


func main() {
	var intA = 12
	stringA := strconv.Itoa(intA)
	fmt.Println("stringA 的数据类型是:",reflect.TypeOf(stringA),"值为:",stringA)
}

输出

stringA 的数据类型是: string 值为: 12

2.5 int64 ==> string

package main

import (
	"fmt"
	"reflect"
	"strconv"
)


func main() {
	var int64A int64 = 12.0000000
	stringA := strconv.FormatInt(int64A, 10)
	fmt.Println("stringA 的数据类型是:",reflect.TypeOf(stringA),"值为:",stringA)
}

输出

stringA 的数据类型是: string 值为: 12

说明:
strconv.FormatInt第二个参数是转换后的字串是x进制显示,如二进制显示:

func main() {
	var int64A int64 = 12.0000000
	stringA := strconv.FormatInt(int64A, 2)
	fmt.Println("stringA 的数据类型是:",reflect.TypeOf(stringA),"值为:",stringA)
}

输出为:

stringA 的数据类型是: string 值为: 1100

2.6 float64 ==> string

package main

import (
	"fmt"
	"reflect"
	"strconv"
)

func main() {
	var float64A float64 = 0.123456789
	stringA := strconv.FormatFloat(float64A, 'f', 5, 64)
	fmt.Println("stringA 的数据类型是:",reflect.TypeOf(stringA),"值为:",stringA)
}

说明:
strconv.FormatFloat()
第二个参数:表示计数形似,f表示不按指数形式计。
第三个参数:表示小数点后保留几位,-1 表示按原来位数

输出

stringA 的数据类型是: string 值为: 0.12346

3 interface转换

3.1 interface ==> float64

  • 下例中,userId是从session中取到的用户Id,类型是interface。
			val,ok:= userId.(float64)
			if ok {
			……
			}

完整代码如下:

	if identity, ok := c.Get("identity"); ok {
		if identityMap, ok := identity.(map[string]interface{}); ok {
			fmt.Printf("identityMap: %+v\n", identityMap)
			if userId, ok := identityMap["UserId"]; ok {
				val,ok:= userId.(float64)
				if ok {
					userIdInt = int(val)
				}
				fmt.Println("里边 userIdInt :",userIdInt)
			}else {
				fmt.Printf("No UserId\n")
			}
		}else {
			fmt.Printf("Not a map: %+v\n", identityMap)
		}

	}else {
		fmt.Println("identify not found")
	}

4. []byte 和 string

4.1 []byte ===> string

	Astring := ASliceByte[:]

4.2 string ===> []byte

var ASliceByte = []byte(Astring)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

golang数据类型转换(int/float/string/interface/[]byte) 的相关文章

  • .join() 方法到底是做什么的?

    我对 Python 还很陌生 并且完全困惑 join 我读过的是连接字符串的首选方法 I tried strid repr 595 print array array c random sample string ascii letters
  • str.translate 与 str.replace - 何时使用哪一个?

    何时以及为什么使用前者而不是后者 反之亦然 目前尚不完全清楚为什么有些人使用前者以及为什么有些人使用后者 它们有不同的目的 translate只能用任意字符串替换单个字符 但一次调用可以执行多次替换 它的参数是一个特殊的表 它将单个字符映射
  • Swift 3 错误:[_SwiftValue pointSize] 无法识别的选择器发送到实例

    我刚刚将我们的项目迁移到 swift 3 发现由于一个问题导致大量崩溃 由于未捕获的异常 NSInvalidArgumentException 而终止应用程序 原因 SwiftValue pointSize 发送到实例的无法识别的选择器 该
  • 在 C# 中将 ANSI (Windows 1252) 转换为 UTF8

    I ve 之前问过这个 https stackoverflow com q 4351985 398713之前在 Stack Overflow 上以一种迂回的方式 这次想把它做好 如何将 ANSI 代码页 1252 转换为 UTF 8 同时保
  • 对话框上的 EditText 不返回任何文本

    我太累了 找不到错误 我没有发现任何错误 但我没有从 editText 收到任何文本 请看下面的代码 活动密码 xml
  • Python - 将宽字符字符串从二进制文件转换为 Python unicode 字符串

    这是漫长的一天 我有点困惑 我正在读取一个包含大量宽字符字符串的二进制文件 我想将它们转储为 Python unicode 字符串 为了解压非字符串数据 我使用 struct 模块 但我不知道如何对字符串执行相同的操作 例如 阅读 系列 一
  • C# 中的接口继承

    我试图解决我在编写应用程序时遇到的相当大的 对我来说 问题 请看这个 为了简单起见 我将尝试缩短代码 我有一个名为的根接口IRepository
  • 将名称字符串编码为唯一的数字

    我有一大堆名字 数以百万计 他们每个人都有一个名字 一个可选的中间名和一个姓氏 我需要将这些名称编码为唯一代表这些名称的数字 编码应该是一对一的 即一个名称只能与一个数字相关联 一个数字只能与一个名称相关联 对此进行编码的明智方法是什么 我
  • .NET 字符串.替换

    我很生气 通常 我喜欢像 C 中那样进行替换 但是是否有一种 C 风格的替换 它一次仅替换一个字母或我指定的 X 数量 不 BCL 中不存在仅替换字符的单个实例的 Replace 方法 两个主要的 Replace 方法将替换所有出现的情况
  • 如何从 JavaScript 调用 ASSX?

    我想调用一个 ASHX 文件并从 JavaScript 传递一些查询字符串变量 并将返回字符串获取到 JavaScript 中的字符串中 我该怎么做 ASHX 文件已被编码为response write 一个基于查询字符串的字符串 像这样的
  • 保留完整姓氏,在 pandas 列中获取名字的首字母(如果有的话,还有中间名)

    我有一个 pandas 数据框 其中有一列表示几位网球运动员的姓氏和姓名 如下所示 Player 0 Roddick Andy 1 Federer Roger 2 Tsonga Jo Wilfred 我想保留完整的姓氏并获取姓名的首字母和中
  • 根据列中的部分字符串匹配选择数据框行

    我想根据列中字符串的部分匹配从数据框中选择行 例如列 x 包含字符串 hsa 使用sqldf if它有一个like语法 我会做类似的事情 select from lt gt where x like hsa 很遗憾 sqldf不支持该语法
  • 使用 scanf 读入 std::string

    正如标题所说 我很好奇是否有一种方法可以用 scanf 读取 C 字符串 我知道我可以读取每个字符并将其插入到应得的字符串中 但我想要类似的东西 string a scanf SOMETHING a gets 也不起作用 提前致谢 这可以工
  • Python 中的密码子生成

    我有这段代码 用于将 DNA 字符串转换为密码子列表 然后将此列表转换为具有各自氨基酸的字符串 然而 当我运行代码并且 DNA 字符串以一对核苷酸 例如 CT 而不是三联体结尾时 代码不会生成氨基酸序列 正如您在输出中看到的 from co
  • 按正确的顺序在字符串数组中查找常见字符

    我花了几天时间研究一个函数 以正确的顺序获取字符串数组中的常见字符 以创建通配符 这是一个解释我的问题的例子 我做了大约3个函数 但是当每个字母的绝对位置不同时 我总是遇到一个错误 我们假设 是 通配符 Array 0 gt 48ca135
  • 将 int 和 const int 转换为 float 时的不同结果

    谁能解释为什么 int 和 const int 给出不同的结果 转换为 float 并用于浮点数学时的结果 参见 例如这段代码 int tmain int argc TCHAR argv int x 1000 const int y 100
  • “如何判断 Python 中的字符串是否重复?”的更复杂版本

    我正在读书这个帖子 https stackoverflow com questions 29481088 how can i tell if a string repeats itself in python我想知道是否有人可以找到将重复的
  • 验证 C# 中的属性

    让我们建议我有一个接口并从中继承类 internal interface IPersonInfo String FirstName get set String LastName get set internal interface IRe
  • SWI-Prolog 中的跨模块“接口”调用

    这可能是 SWI Prolog 模块系统特有的 假设我们有三个 Prolog 模块 在 SWI Prolog 模块系统中 robin 在文件中robin pl arthur 在文件中arthur pl helper 在文件中helper p
  • Matlab strcat 不返回字符串?

    imgstr 无法识别 strcat 的输出字符串 homedir C Users images for img 01 bmp 02 bmp 03 bmp imgstr strcat homedir img I imread imgstr

随机推荐

  • Android 第三方 UI 库 GreenDroid 使用方法

    原帖地址 xff1a http www acwind net blog p 61 1297 一直觉得 Android SDK 本身提供的界面 UI 库实在是太难看了 xff0c 而且提供的功能也总是这里那里很多缺憾 所以一直在关注各种第三方
  • android视野慢慢开阔

    1 umeng 友盟移动开发者服务平台 http www umeng com 原来是分析用户的 xff0c 长见识了 友盟统计分析3 0 用更精细的数据读懂用户 服务超过30 000开发者 100 000款APP xff0c 日启动次数15
  • HTC G7 desire刷机和小米4刷原生安卓

    步骤 1 root 2 安装recovery recovery img文件 http down10 zol com cn shouji recovery clockwork 2 5 0 1 bravo slcd img reflash文件
  • java一些疑问的求证和遇到的问题

    100 关于byte array 有一个字符串s xff0c 输出字符对应的unicode十进制和十六进制 getBytes 貌似获取每个字符的8位二进制的字节 xff1b 输出字节的十六进制形式的字符串验证后确实是 String s 61
  • Java基础

    Java语言的一些基础知识 xff0c 需要常记在心 xff0c 但是好记性不如烂笔头 就记在这吧 final 修饰的变量不能被赋值 xff0c 可以在定义的同时赋值 final 修饰的方法可以被继承 xff0c 不能被重写override
  • Java EE学习

    遇见的问题 servlet访问出现404 xff0c jsp正常访问 java jdk1 8 eclipse2018 12 4 10 0 Dynamic web module version 4 0 Tomcat9 0 经过一番搜索 xff
  • 手把手教你Asp.net三层架构

    首先简单介绍下三层乃至多层架构 xff08 高手跳过 xff09 xff1a BLL 就是business Logic laywer xff08 业务逻辑层 xff09 他只负责向数据提供者也就是DAL调用数据 然后传递给客户程序也就是UI
  • 深奥的补码

    上学的时候汇编语言中有原码 反码 补码 考试的时候经常考 xff0c 比较好的办法就是记住他们的转换规则 xff0c 但是虽然记住转换规则 xff0c 考试也考不差 xff0c 心头却始终有朵乌云挥之不去 xff0c 令人异常纠结 xff0
  • 详解Android Intent

    一 Intent 作用 Intent被译作意图 xff0c 其实还是很能传神的 xff0c Intent期望做到的 xff0c 就是把实现者和调用者完全解耦 xff0c 调用者专心将以意图描述清晰 xff0c 发送出去 xff0c 就可以梦
  • 如何检索Android设备的唯一ID

    Android的开发者在一些特定情况下都需要知道手机中的唯一设备ID 关于本文档 Android 的开发者在一些特定情况下都需要知道手机中的唯一设备 ID 例如 xff0c 跟踪应用程序的安装 xff0c 生成用于复制保护的 DRM 时需要
  • centos6 yum源失效解决方法

    今天看到服务器提示有漏洞需要更新 xff0c 在执行更新命令的时候一直报错 xff0c 因为CentOS 6操作系统版本结束了生命周期 xff08 EOL xff09 xff0c Linux社区已不再维护该操作系统版本 导致不能正常更新 x
  • 安卓使用NavHostFragment时,如何取消按返回键Fragment层层返回效果,去除层层返回

    问题现象 xff1a 在安卓中使用NavHostFragment搭配Fragment做APP主页导航时 xff0c 如果在几个Fragment来回切换了很多次 xff0c 当按返回键想退出app时 xff0c 会造成首先要在Fragment
  • 产品化思维

    1 1 产品的本质 能够供给市场 xff0c 被人们使用和消费 xff0c 并能满足人们某种需求的任何东西 xff0c 包括有形的物品 无形的服务 组织 观念或它们的组合 定义 xff1a 市场是提供给买卖双方交易的平台 xff0c 而人在
  • C和C++的区别?

    C和C 43 43 的区别为 xff1a 结构不同 设计不同 库函数不同 一 结构不同 1 C语言 xff1a C语言结构只有成员变量 xff0c 而没有成员方法 2 C 43 43 xff1a C 43 43 结构中可以有自己的成员变量和
  • 自定义生成公众号二维码,用于小票打印机使用

    近期因项目需求 xff0c 需要将微信公众号二维码打印在小票上 xff0c 小票打印机不支持直接打印图片 xff0c 现在找到一个利用链接来生成自己的微信公众号二维码 xff0c 链接如下 xff1a https mp weixin qq
  • Settings Preference 的理解

    大纲 xff1a 1 一个简单的Preference例子 2 Preferenece数据的操作 3 xff0c Preferenece XML 4 xff0c Using Preference Fragments 5 xff0c Using
  • 需要看的技术书籍

    语言类 xff1a 深度探索C 43 43 对象模型 xff0c 对应的英文版是 Inside C 43 43 43 Object Model 程序编译 链接 加载类 xff1a 链接器和加载器 xff0c 对应的英文版是 Linker a
  • ASP.NET 自定义控件 自定义属性的使用

    最近在给公司一个老的ASP平台进行改版 xff0c 由于这个平台运行时间太长 xff0c 期间有很多程序员进行过修改 xff0c 导致数据库显得很乱 在实际改版时架构采用了多层架构 xff0c 引入工厂模式 xff0c 面向接口 对于资讯类
  • 启动IDEA找不到Tomcat报错Plugin ErrorProblems found loading plugins:

    解决方法 xff1a 找到IDEA的配置文件夹下的disabled plugins txt xff0c 删除然后重启IDEA即可 xff1b 我的文件在 xff1a C Users admin IntelliJIdea2018 1 conf
  • golang数据类型转换(int/float/string/interface/[]byte)

    文章目录 1 int和float转换1 1 int 61 61 gt float32 641 2 float64 32 61 61 gt int 2 字串和数字的转换 xff08 strconv xff09 2 1 string 61 61