【GO语言笔记】数据类型

前言

文章内容总结自b站视频

数据类型

GO语言中有如下几种数据类型:布尔型(bool)、数字类型(分为整型和浮点型)、字符串类型(string)和派生类型(包括:(a)指针类型、 数组类型、结构化类型、 管道类型、函数类型、切片类型、接口类型以及Map 类)。

布尔类型

布尔类型经常用在条件判断、循环和逻辑表达式中。

数字类型

Go 语言支持整型和浮点型数字,并且原生支持复数,其中位的运算采用补码。
Go也有基于架构的类型,例如:int、uint 和uintptr。
这些类型的长度都是根据运行程序所在的操作系统类型所决定的:

  • int 和 uint 在32位操作系统上,它们均使用32位(4个字节),在64位操作系统上,它们均使用64位(8个字节)。
  • uintptr 的长度被设定为足够存放一个指针即可。

Go 语言中没有 float 类型。(Go语言中只有 float32 和 float64)没有double类型。
与操作系统架构无关的类型都有固定的大小,并在类型的名称中就可以看出

整数类型

在这里插入图片描述

浮点类型

在这里插入图片描述

复数类型

  • 复数类型有两种:complex64和complex128。前者实部和虚部的大小分别为32位,后者实部和虚部的大小分别为64位。
  • 定义方式举例:var c complex64 = 1 + 2i

字符串类型

  • Go语言中的字符串是一个任意字节的常量序列,类似于C++里面的const char []
  • 字符串字面量使用双引号“”或者反引号来创建。双引号用来创建可解析的字符串,支持转义,但不能用来引用多行反引号用来创建原生的字符串字面量,可能由多行组成,但不支持转义,并且可以包含除了反引号外其他所有字符。双引号创建可解析的字符串应用最广泛,反引号用来创建原生的字符串则多用于书写多行消息,HTML以及正则表达式。

字符串连接方式

  1. 使用+连接。
  2. 使用fat中的Sprintf()函数连接,参数设置和Printf类似,区别为Sprintf输出一个字符串类型的返回值,Printf输出字符串到终端。
  3. 使用strings.Join()连接。举例:strings.Join([]string{s1, s2, s3}, "X"),其中,s1、s2和s3表示要连接的字符串,X表示连接的符号。这种方式先根据字符串数组的内容,计算出一个拼接之后的长度,然后申请对应大小的内存,一个一个字符串填入,在已有一个数组的情况下,这种效率会很高,但是本来没有,去构造这个数据的代价比较高。
  4. 使用bytes.WriteString()。这个比较理想,可以当成可变字符使用,对内存的增长也有优化,如果能预估字符事的长度,还取以用buffer.Grow() 接口来设置 capacity。举例:
    var buffer bytes.Buffer 
    buffer.WriteString("tom")
    buffer.WriteString(", ")
    buffer.WriteString("100")
    fmt.Printf("buffer.String() : %v\n", buffer.String())
    
  5. 使用strings.Builder(),使用方式和bytes的类似。

字符串的切片操作

  • 使用[n1:n2]对字符串进行切片操作,区间为左开右闭,即取到的切片范围为n1到n2-1。可以缺省左值或者右值,表示取到字符串的左端或者右端。当然也可以使用[n]方式取一个字符。
  • 示例
    s := "hello world"
    s1 := s[1:3] // el
    s2 := s[0] // h
    s3 := s[1:] // ello world
    s4 := s[:11] // hello world
    

字符串常用函数

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值