go语言之类型转换

author author     2022-12-03     392

关键词:

go语言的类型不能混合使用

fmt.Println("abc" + 1)

会报字符串和整数不能这么操作

se := 12.0
wu := 5
fmt.Println(se * wu)
(mismatched types float64 and int)

一个是float一个是int不允许操作

例如上面,我们需要把wu这个变量类型转换为float64.

fmt.Println(se * float64(wu))

通过数据类型同名的函数包裹着变量就可以返回新类型。当然也可以把float类型转成int,但是这样会把小数部分直接截断。

mm := 12.5
fmt.Println(int(mm))

但是直接使用常量就不行了。

fmt.Println(int(12.5))

总得来说一般从取值范围小的类型转换为取值范围大的类型总是安全的,其他方式的类型转换则存在风险。有一个技巧,就是把范围大的类型转为小范围类型时,用值与小范围的值进行比较,看是否在范围之内,如果在才允许转换。

fmt.Println("abc" + strconv.Itoa(1))

通过strconv.Itoa(1)把数字1转成字符串再进行合并就没有问题了。

hh, _ := strconv.Atoi("1")
fmt.Println(hh)

通过strconv.Atoi可以把字符串转换成数字,这样就可以使用数字进行相应的运算。

布尔值转成字符串

nn := false
nntext := fmt.Sprintf("%v", nn)
fmt.Println(nntext)

字符串转换成布尔值

ok := "no"
oo := (ok == "yes")
fmt.Println(oo)

go基础之程序结构数据类型(代码片段)

Go基础(一)之程序结构、数据类型一、简介1.1Go语言的介绍1.2环境配置1.3快速入门1.4Go开发的注意事项二、程序结构2.1标识符2.2变量2.3常量2.4运算符2.5流程控制2.7init函数三、数据类型3.1基本数据类型3.1.1整型3.1.2浮点型3.1... 查看详情

go基础之程序结构数据类型(代码片段)

Go基础(一)之程序结构、数据类型一、简介1.1Go语言的介绍1.2环境配置1.3快速入门1.4Go开发的注意事项二、程序结构2.1标识符2.2变量2.3常量2.4运算符2.5流程控制2.7init函数三、数据类型3.1基本数据类型3.1.1整型3.1.2浮点型3.1... 查看详情

go语言编程之字符串与其他数据类型之间的转换(代码片段)

一、将字符串转换为其他类型str:="helloworld"//将字符串转换为字符切片强制类型转换slice:=[]byte(str)fmt.Println(slice)fmt.Printf("%c",slice)//字符切片转换为字符串强制类型转换str2:=string(slice)fmt.Println(str2)//将字符串类型转换为bool类型b,err:=s... 查看详情

go语言之数组

1、go语言的数组和python的列表不一样,python的列表没有限定类型,而go的数组限定的类型,理由是这样的,请看下面的图2、go语言的数组packagemainimport"fmt"//go语言的数组类似python中的列表//申明数组//var数组名[数组长度]数组类型//... 查看详情

cgo之类型转换

在Go语言中访问C语言的符号时,一般是通过虚拟的“C”包访问,比如C.int对应C语言的int类型。有些C语言的类型是由多个关键字组成,但通过虚拟的“C”包访问C语言类型时名称部分不能有空格字符,比如unsignedint不能直接通过C.u... 查看详情

go语言之类型

Go语言是一种静态类型的编程语言,所以在编译器进行编译的时候,就要知道每个值的类型,这样编译器就知道要为这个值分配多少内存,并且知道这段分配的内存表示什么。提前知道值的类型的好处有很多,比如编译器可以合... 查看详情

go语言之structtag

在上一篇介绍Go反射的时候,提到了如何通过反射获取Struct的Tag,这一篇文章主要就是介绍这个的使用和原理,在介绍之前我们先看一下JSON字符串和Struct类型相互转换的例子。JSON字符串对象转换funcmain(){  varuUser  h... 查看详情

go语言之嵌入类型

...型里的一种方式,这种功能对代码复用非常重要。在其他语言中,有继承可以做同样的事情,但是在Go语言中,没有继承的概念。Go提倡的代码复用的方式是组合,所以这也是嵌入类型的意义所在。组合而不是继承,所以Go才会更... 查看详情

go语言之go语言反射(代码片段)

GO语言反射反射是指在程序运行期对程序本身进行访问和修改的能力。程序在编译时,变量被转换为内存地址,变量名不会被编译器写入到可执行部分。在运行程序时,程序无法获取自身的信息。支持反射的语言可以在程序编译... 查看详情

go语言进阶之路

1.1Go语言基础环境配置1.2VScode中Go的相关插件的安装1.3Go语言基础之1--标识符、关键字、变量和常量、数据类型、Go的基本程序结构、Golang的特性2.1Go语言基础之2--字符串详解2.2Go语言基础之3--时间和日期序列2.3Go语言基础之4--流程... 查看详情

go语言之method(代码片段)

方法methodGo中虽没有class,但依旧有method通过显示说明receiver来实现与某个类型的组合只能为同一个包中的类型定义方法receiver可以是类型的值或指针不存在方法重载可以使用值或者指针来调用方法,编译器会自动完成转换从某种意... 查看详情

go语言之字符串指针数组切片(代码片段)

一:字符串概述:Go语言将字符串作为种原生的基本数据类型,字符串的初始化可以使用字符串字面量。(1)字符串是常量,可以通过类数组索引访问其字节单元,但是不能修改某个字节的值(2〕宇符串转换为切片[]byte(要慎用... 查看详情

go语言之反射

和Java语言一样,Go也实现运行时反射,这为我们提供一种可以在运行时操作任意类型对象的能力。比如我们可以查看一个接口变量的具体类型,看看一个结构体有多少字段,如何修改某个字段的值等。TypeOf和ValueOf在Go的反射定义... 查看详情

go语音基础之类型转换

1、类型转换示例:packagemain//必须有一个main包import"fmt"funcmain() //这种不能转换的类型,叫不兼容类型 varflagbool flag=true fmt.Printf("flag=%t",flag) //bool类型不能转换为int //fmt.Printf("flag=%d",int(flag)) //0就是假,非0就是真 //整型也不能转换... 查看详情

go语言学习(十七)go语言类型转换

Go语言类型转换类型转换用于将一种数据类型的变量转换为另外一种类型的变量。Go语言类型转换基本格式如下:type_name(expression)type_name为类型,expression为表达式。实例以下实例中将整型转化为浮点型,并计算结果,将结果赋值... 查看详情

go语言之指针

go的指针采用了c语言指针的语法,我们需要特别关注&和*,&表示地址操作符,可以得到指定变量的内存地址。abc:=10fmt.Println(&abc)打印出来的是abc的地址,我们可以通过在变量前面加*对其进行解引用fmt.Println(*abc)打印出来... 查看详情

go语言基础之基本数据类型(代码片段)

Go语言中数据类型极其丰富,除了基本的整型、浮点型、布尔型、字符串外,还有数组、切片、结构体、函数、map、通道channel等。Go语言的基本类型和其他语言大同小异。基本数据类型整型整型分为以下两个大类:按长度分为:i... 查看详情

go语言之变量,常量

1,Go语言的变量声明()  Go语言中的变量需要声明后才能使用,同一作用域内不支持重复声明。并且Go语言的变量声明后必须使用。  变量声明格式:var变量名类型varnamestringvarageintvarisokbool  批量声明变量var(变量名类型........ 查看详情