美文网首页
2-7 Go --- 类型转换

2-7 Go --- 类型转换

作者: 捌千里路雲和月 | 来源:发表于2021-07-11 23:25 被阅读0次
  • Go 语言没有隐式类型转换,类型转换都是显示的强制转换。明明白白写清楚需要转换的类型。
  • 强制类型转换只能在两个类型之间相互支持的情况下才能使用。如数字类型的 int 和 float。
  • float 浮点数转换为 int 整形会出现精度丢失现象,只取整数位,丢弃小数位。

  • 不同类型数值不能参与运算,不然会报错。
package main

import "fmt"

func main() {
    n1 := 10      // n1 int 类型
    f1 := 1.99    // f1 float 浮点型
    fmt.Printf("n1:%T\n", n1)      // Printf(%T) 查看变量的值类型
    fmt.Printf("f1:%T", f1)
}
//输出结果:
PS C:\Users\86186\go\src\chapter2\2.7> go run .\main.go
n1:int      // n1 int 整数型
f1:float64    // f1 float 浮点型

------------------------------------ 分割线 ----------------------------------
// 接上面不转换类型的基础上,ni、f1 参与运算会报错。
package main

import "fmt"

func main() {
    n1 := 10
    f1 := 1.99
    fmt.Println(n1 + f1)      // int 类型 n1 和 float 浮点型 f1 相加

}
//输出结果:
PS C:\Users\86186\go\src\chapter2\2.7> go run .\main.go
# command-line-arguments
.\main.go:8:17: invalid operation: n1 + f1 (mismatched types int and float64)      
// 系统提示:int和 float64类型不匹配
  • 如果想两个不同类型数值进行运算,就需要强制类型转换。
  • 方法一:int 强转为 float
package main

import "fmt"

func main() {
    n1 := 10
    f1 := 1.99
    fmt.Println(float64(n1) + f1)   // float64(int),把 int 类型强转为 float64
                               // 此时,n1 和 f1 一样都是 float64 可以参与运算。

}

//输出结果:
PS C:\Users\86186\go\src\chapter2\2.7> go run .\main.go
11.99     // 10+1.99=11.99,没问题。
  • 方法二:float 强转为 int
package main 

import "fmt"

func main() {
    n1 := 10
    f1 := 1.99
    fmt.Println(n1 + int(f1))    // int(float64),把 float64类型强转为 int
                               // 此时,n1 和 f1 一样都是 int 可以参与运算。

}
//输出结果:
PS C:\Users\86186\go\src\chapter2\2.7> go run .\main.go
11    // 10+1.99=11.99,但出来的结果是11。
      //这是因为 float 浮点数转换为 int 整形会出现精度丢失现象,
      //只取整数位,丢弃小数位。所有,11.99 只取整数位 11 。

相关文章

  • 2-7 Go --- 类型转换

    Go 语言没有隐式类型转换,类型转换都是显示的强制转换。明明白白写清楚需要转换的类型。 强制类型转换只能在两个类型...

  • 03-数据类型转换

    数值类型转换 C语言中存在显式转换和隐式转换 Go语言中只有显式转换 Go语言中数值类型转换注意点 数值类型转换为...

  • Go语言类型转换

    类型转换 Go语言和C语言不一样,Go语言没有隐式转换,只有显示转换 格式和C语言一样 Go语言类型转换被用于转换...

  • Go 语言基础——变量常量的定义

    go语言不支持隐式类型转换,别名和原有类型也不能进行隐式类型转换go语言不支持隐式转换 变量 变量声明 声明变量不...

  • Go语言类型转换和类型断言

    Go语言的类型转换和类型断言: 类型转换在编译期完成,包括强制转换和隐式转换 类型断言在运行时确定,包括安全类型断...

  • go 类型转换

    interface{}、断言与类型转换 这篇文章里面的interface{}转换,转换示例非常清楚 (https:...

  • go类型转换

    1.最简单的转换 type_name(expression)float跟int可以互转,但是会丢失所有精度。 1....

  • Go类型转换

    1.string转int 2.int转string 3.string转float 4.float转string 5...

  • go类型转换

    在必要以及可行的情况下,一个类型的值可以被转换成另一种类型的值。由于Go语言不存在隐式类型转换,因此所有的类型转换...

  • 04GoLang类型转换

    数值类型之间的转换 在C语言中如何转换 1.1隐式转换 1.2显示转换 Go语言中如何转换 在Go语言中只有显示转...

网友评论

      本文标题:2-7 Go --- 类型转换

      本文链接:https://www.haomeiwen.com/subject/nrexpltx.html