golang数据类型

go语言严格来说一共有9种不同大小的类型,无符号4有符号4 uintptr类型,用于底层编程

其中int8 int16 int32  int64 不同大小的有符号类型整数对应 8  16 32  64 大小的有符号整型数。对应无符号整型分别是uint8 uint16  uint32   uint64。除了指定整型位数外,也可以直接使用int uint

go语言可以根据不同平台的实现对int做出调整,int32  int64  uint 同理

go语言中所有类型声明格式都是一样的

 var   value1 inter32

func main(){

value2 :=64 

}

int  int8 不是同一个类型,俩种类型不能直接比较,不能直接运算。如果需要对俩种不同类型的值执行运算操作,需要转换类型。

整型的运算。

go语言的整型支持常规整数运算,加减乘除%求余

5 % 3 

x,y := 2,4 

if  x== y {

 fmt.println("x等于y")

}

上面是一个if判断流程,当X等于y输出“x等于y",否则什么都不输出。

package main

import "fmt"

var (
	x int32
	y int32
	// y int64
)

func main() {
	x, y = 2, 4
	if x == y {
		fmt.Println("x等于y")
	} else {
		fmt.Println("x不等于y")
	}
	// if x == 1 || y == 4 {
	// 	fmt.Println("x等于y")
	// }

}

编译不通过的if语言是因为尝试比较两个不同的类型,自然不能通过。编译通过的if语言中,字面常量2虽然看起来相等,但所表示的其实不同的类型,在编译运行是,这两个字面常量都会被转换为相应的类型。

if   x ==  999999 ||  y == 2 {

  fmt.print()

}

此时也报错,因为越界

go语言整型数据也支持位运算  

浮点型 用于表示包含小数点的数据,比如3.14就是一个浮点型数据。go语言提供了两种精度的浮点数,float32  float64.float32精确到小数点后7位,float64精确到小数点后15位。由于精度不同的缘故,在使用判读时需要注意

由于math包中所有有关数学运算的函数有要求接受float64类型,

package main

import (
	"fmt"
	"reflect"
)

func main() {
	var value1 float64
	value1 = 1
	value2 := 2
	value3 := 3.0
	v := value1 + value3
	fmt.Println(value1, value2, value3, v)
	fmt.Println("v的类型是", reflect.TypeOf(2))
}

使用了reflect.TypeOf(),反射的概念。

浮点型的运算

package main

import "fmt"

func main() {
	var value1 float64
	value1 = 1
	value2 := 1.0000000000000000000000001
	if value1 == value2 {
		fmt.Println("相等")
	} else {
		fmt.Println("不等")
	}
}

精度影响大小,float64是小数点后15位,float32是小数点后7位。之后的数字就会被舍弃从而相等。

 复数

我们把a+bi,a,b均为实数,类型为浮点型的数称为复数,其中a称为实部,b称为虚部,i称为书序单位

complex64 32位实数和虚数  complex128   64位实数和虚数

package main

import "fmt"

var value1 float64

func main() {
	var v1 complex64
	v1 = 3.2 + 12i
	v2 := 3.2 + 12i //默认是comlpex128
	v3 := complex(3.2, 12)
	v := v2 + v3
	fmt.Println(v1, v2, v3, v)
	// if v2 == v3 {
	// 	fmt.Println("类型相等")
	// } else {
	// 	fmt.Println("不等")
	// }
}

v1和v2属于长度不通,不能==,编译报错。

v1实部和虚部为float32类型,v2,v3虽然不使用方法定义,但是返回的结果其实是相等的

package main

import "fmt"

func main() {
	v2 := 3.2 + 12i
	v3 := complex(3.2, 12)
	v := v2 + v3
	fmt.Println(v2, v3, v)
	vr := real(v)
	vi := imag(v)
	fmt.Printf("v的实部%v,v的虚部%v", vr, vi)
}

默认的格式化输出,占位符%v,除非输出其他与默认不同的格式,否则都可以使用%v,但是不推荐

bool  %t  

int int8  %d 

float complex64 %g   string %s  chan %p pointer %p

更多关于复数的函数可查阅math/cmplx标准库的文档,复数支持常规数学运算,但因为实部和虚部否是浮点型,在使用==,!=比较时。需要注意数字精度,cmath包中包含了一些操作复数的公共方法,除非是对内存有严格颜值的程序,否则建议complex128 ,减少后续类型转换的操作

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值