Go语言你基础数据类型

字符类型

Go语言中的字符串类型都是不可变类型,默认使用UTF-8编码。
两种表示形式:
(1)双引号表示

var a = "char"
//定义个字符串变量a,值为 "char"

当然双引号里面也可以是转义字符,八进制表示或十六进制表示。

var a = "中\n国"
var b = "\x61"
var c = "\142"

(2)单引号表示
单引号也可以表示字符串,与双引号的区别是单引号里面的内容原样输出,

var a = "中\n国"
// 输出的结果为 "中\n国" 转义字符回车并不会生效 

整型

Go语言同时提供了有符号和无符号的整数类型,其中包括 int8、int16、int32 和 int64 四种大小截然不同的有符号整数类型,分别对应 8、16、32、64 bit(二进制位)大小的有符号整数,与此对应的是 uint8、uint16、uint32 和 uint64 四种无符号整数类型。
此外还有 int ,uint 类型,对应所在机器的CPU字节码待定的长度,机器是32位的那么int就表示有符号32bit大小,机器是64位的int就表示有符号的64bit大小。uint也是同样同理,只不过表示的是无符号的数据类型而已。
uintptr 是属于无符号的数据类型,没有指定bit大小,为什么没有指定大小呢?因为我们日常编码开发过程中压根就不回用到。它用于底层代码编译交互使用。
(1)定义

var a = 10
// 定义一个整型数据类型变量a

浮点型

顾名思义,浮点型即为小数类型,有 float32(精确到小数点后7位),float64(精确到小数点后15位),
定义:

var f = 3.1415926
var v = 3.0
var v1 float64 = 3.0000000000000001
// 不显示声明数据类型,v 的默认类型是float64, v == v1 返回true, 应为float64后15位以后会忽略。

复数类型

没错,负数类型就是高中学的负数那种,有实部与虚部。go语言中的复数类型有两种:complex64,complex128
定义:

	// 定义64bit类型复数
	a := complex64(2 + 5i)
	// 定义128bit类型复数
	b := complex(2, 5)
	// 定义128bit类型复数
	c := complex128(4 +0 5i)
	// 获取出复数的虚数部分值
	fmt.Printf("%v\n", imag(a))
	fmt.Printf("%v\n", imag(b))
	fmt.Printf("%v\n", imag(c))
	fmt.Printf("%v\n", real(c))

布尔类型

与其他编程语言的bool类型一样,几乎没有区别,即,真值(true) 假值(false)
(1)定义:

// 定义一个bool类型b 值为true
var b = true
// 定义一个bool类型c 值为false
c := false

(2)与字符串类型互相转换

// string 转 bool
// 字符串可以是 "1", "t", "T", "true", "TRUE", "True","0", "f", "F", "false", "FALSE", "False" 中的任何一个
var b = "true"  
v,err := strconv.ParseBool(b)

// bool 类型转string
f := false
v := strconv.FormatBool(f)
// 如果 f 值为false,返回字符串“false” ;值为true 返回字符串“true”

字节类型

  • UTF-8字符的一个序列即为字符串。ASCII表1个码值占用1个字节。所以1个字节最多可以表示127个ASCII值,1个中文则有3个字节表示。

  • byte类型
    byte是uint8的别名

  • rune类型
    rune类型是int32类型别名

字符串与byte、rune类型转换

因为golang中字符串其实是可以看成是两种形态,一种是字节类型,一种是字符类型;类型定义好字符串之后是不能够修改的,假设你有个字符串 str := “中guo”,你想对字节进行修改,那么你就可以把str先转换位[]byte , 如下:

  • 以字节形式修改字符串(通过复制成[]byte修改)
str := "123abc"
strByte := []byte(str)
fmt.Print(string(strByte))	// 输出 “123abc”
strByte[0] = 65
fmt.Print(string(strByte))	// 输出 “A23abc”
  • 已字符形式修改字符串(通过复制成[]rune修改)
	str2 := "中国123"
	strRune := []rune(str2)
	fmt.Print("%#v",string(strRune))// 输出"中国123"
	strRune[0] = 65
	fmt.Print("%#v",string(strRune))// 输出"A国124"

总结:
(1)你想修改一个字符串中的某一个字符,可以先把字符串转为 []rune,然后根据下标进行修改;
(2)你想修改一个字符串中的某一个字节,可以先把字符串转为 []byte,然后根据下标进行修改;

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值