go基础语法-内置变量类型

Posted lz120792

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了go基础语法-内置变量类型相关的知识,希望对你有一定的参考价值。

内建变量类型

1.内建变量一览

  • bool,string
  • (u)int,(u)int8,(u)int16,(u)int32,(u)int64,uintptr
    无长度int的实际长度取决于操作系统位数(32/64)
    uintptr为指针类型
  • byte,rune
    rune相当于其他语言的char,长度为int4(32位)
  • float32,float32,complex64,complex128
    complex为复数(1+1i)

2.强制类型转换

golang有严格的类型匹配,不同的类型之间通常需要手动转换(interface类型除外,以后详细讲解),编译器不会进行自动转换

3.浮点数进度

浮点数运算会丢失精度,解决方法很多,在测试代码中提供了一种,思路为:如果要保留m位小数,对m + 1位加0.5后四舍五入

测试代码

package main
import (
    "fmt"
    "math"
    "math/cmplx"
)
/*
测试复数,勾股定理
 */
func complexTest() {
    c := 5 + 12i
    fmt.Println(cmplx.Abs(c))
}
/*
欧拉公式
 */
func euler() {
    fmt.Printf("%.1f
",          //浮点运算会丢失精度,这里只保留一位小数,也可保留多位
        cmplx.Exp(1i*math.Pi)+1)
}
/*
精度损失的解决方案,sou : 浮点数,m : 要保留的位数
 */
func preciseGuarantee(sou float64, m int) {
    n := math.Pow10(m) //n = 10的m次方
    fmt.Println(math.Trunc((sou+0.5/n)*n) / n)
}
/*
强制类型转换
 */
func triangle(){
    a,b,c := 3,4,0
    c=int(                      //c为int型,math.Sqrt返回值类型为float64,需要强转,不能自动转换
        math.Sqrt(float64(a*a+b*b)))    //math.Sqrt参数类型为float64
    fmt.Println(c)
}
func main() {
    complexTest()
    euler()
    preciseGuarantee(3.141592653589793, 10)
    triangle()
}




以上是关于go基础语法-内置变量类型的主要内容,如果未能解决你的问题,请参考以下文章

[Go] 通过 17 个简短代码片段,切底弄懂 channel 基础

Go入门教程2内置基础类型(Boolean数值字符串错误类型),分组,iota枚举,array(数值),slice(切片),map(字典),make/new操作,零值

Go内建变量类型

Go内建变量类型

Go内建变量类型

Go内建变量类型