Go语言之基本数据类型

一、 整型

类型有无符号长度取值范围
int8

1个字节(8bit)

-128 ~127
int162个字节(16bit)-32768 ~ 32767
int32 4个字节(32bit)-2147483648 ~ 2147483647
int648个字节(64bit)-9223372036854775808 ~ 9223372036854775807
int 32位操作系统上就是int32,64位操作系统上就是int64
 
uint81个字节(8bit)0 ~ 255
uint162个字节(16bit)0 ~ 65535
uint324个字节(32bit)0 ~ 4294967295
uint648个字节(64bit)0 ~ 18446744073709551615
uint 32位操作系统上就是int32,64位操作系统上就是int64

GO在默认情况下使用的是有符号int型

建议:在涉及到二进制传输、读写文件的结构描述时,为了保持文件的结构不会受到不同编译目标平台字节长度的影响,不要使用int和 uint。

二、布尔类型

Go语言中以bool类型进行声明布尔型数据,布尔型数据只有true和false两个值。

  • 布尔类型变量的默认值为false。
  • Go 语言中不允许将整型强制转换为布尔型.
  • 布尔型无法参与数值运算,也无法与其他类型进行转换。
类型长度取值范围
bool

1个字节(8bit)

true 或者 false

三、浮点型

  Go语言支持两种浮点型数:float32和float64;数位越高浮点数的精度越高
  float32: 占4字节32bit

  •   math.MaxFloat32 表示 float32 能取到的最大数值,大约是 3.4e38
  •   最小值为:1.4e-45

  float64:占8字节64bitfloat64占用的内存是float32的两倍

  •   math.MaxFloat64 表示 float64 能取到的最大数值,大约是 1.8e308;
  •   最小值为:4.9e-324

Go 语言默认情况下使用的是 float64

四、byte和rune 

1、byte 实际就是 uint8。
2、rune 实际就是 int32。

Go 语言的字符有以下两种:

  • uint8类型,或者叫 byte 型,代表了ASCII码的一个字符,处理英文很方便
  • rune类型,代表一个 UTF-8字符 ,处理Unicode 字符集很方便,Go采用的是UTF-8编码格式
package main

import (
	"fmt"
	"unicode/utf8"
)

func main() {
	s := "hello中国"
	fmt.Printf("s 数据类型=%T ,ASCII 字符个数=%v , Uncode 字符数量=%v ", s, len(s), utf8.RuneCountInString(s))
	fmt.Println()
	for i := 0; i < len(s); i++ { //byte
		fmt.Printf("%v(%c) ", s[i], s[i])
	}
	fmt.Println()
	for _, r := range s { //rune
		fmt.Printf("%v(%c) ", r, r)
	}
	fmt.Println()
}

因为UTF8编码下一个中文汉字由3个字节组成,所以不能按照字节去遍历一个包含中文的字符串,否则就会出现上面输出乱码

五、字符串

Go语言里的字符串的内部采用的是Unicode字符集的UTF-8编码,字符串的值为双引号""中的内容;


Go中字符串是一个字节切片,所以我们可以获取字符串的每一个字节。

string 常用的方法

  • utf8 package("unicode/utf8") 包中的 func RuneCountInString(s string) (n int) 方法用来获取字符串中字符的长度                                    
  • len(str)                                  求字节长度
  • +或fmt.Sprintf                            拼接字符串
  • strings.Split                            分割
  • strings.contains                         判断是否包含
  • strings.HasPrefix,strings.HasSuffix      前缀/后缀判断
  • strings.Index(),strings.LastIndex()      子串出现的位置
  • strings.Join(a[]string, sep string)       join操作

六、复数类型

complex64: 实部和虚部都是 float32 类型的的复数。
complex128:实部和虚部都是 float64 类型的的复数。

七、类型转换

Go不像JAVA,C++有自动类型提升和自动类型转换,他有着非常严格的强类型特征, 没有自动类型转换和自动类型提升

num1 和 num2 应该是相同的类型,需要我们显示的做类型转换;语法: 把 v 转换为 T 类型    T(v)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值