Go+赋值运算、字符串、切片

简介: 赋值运算符就是可以直接进行赋值的一种运算符

赋值运算符

概述


赋值运算符就是可以直接进行赋值的一种运算符。


分类


我们列出了Go+中所有的赋值运算符。


运算符 描述 实例
= 简单的赋值运算符,将一个表达式的值赋给一个左值 C = A + B 将 A + B 表达式结果赋值给 C
+= 相加后再赋值 C += A 等于 C = C + A
-= 相减后再赋值 C -= A 等于 C = C - A
*= 相乘后再赋值 C *= A 等于 C = C * A
/= 相除后再赋值 C /= A 等于 C = C / A
%= 求余后再赋值 C %= A 等于 C = C % A
<<= 左移后赋值 C <<= 2 等于 C = C << 2
>>= 右移后赋值 C >>= 2 等于 C = C >> 2
&= 按位与后赋值 C &= 2 等于 C = C & 2
^= 按位异或后赋值 C ^= 2 等于 C = C ^ 2
|= 按位或后赋值 C |= 2 等于 C = C | 2
var a int = 21
var c int
c = a
println("c 值为 = ", c) // c 值为 =  21
c += a
println("c 值为 = ", c) // c 值为 =  42 
c -= a
println("c 值为 = ", c) // c 值为 =  21 
c *= a
println("c 值为 = ", c) // c 值为 =  441
c /= a
println("c 值为 = ", c) // c 值为 =  21 
c = 200
c <<= 2
println("c 值为 = ", c) // c 值为 =  800
c >>= 2
println("c 值为 = ", c) // c 值为 =  200
c &= 2
println("c 值为 = ", c) // c 值为 =  0
c ^= 2
println("c 值为 = ", c) // c 值为 =  2
c |= 2
println("c 值为 = ", c) // c 值为 =  2
复制代码


声明并赋值运算符


Go+有一种简便的赋值写法,他的语法格式如下:


变量名 := 变量值
复制代码


需要注意的是,他不能在函数外面使用,即不能用来声明全局变量。


a := 100;
a +=: 10;
println(a) //110
复制代码


字符串


概述


一个字符串就是一个不可以更改的字节序列,字符串可以包含任意的数据,一般用于存储文本。


定义字符串


我们一般使用双引号""来定义一个字符串,但是要注意,有一些特定的字符是有固定的含义的,我们称为转义字符,这些转义字符包含:


  • \n:换行符
  • \r:回车符
  • \t:tab 键
  • \u 或 \U:Unicode 字符
  • \:反斜杠自身


println("hello" + "\t" + "world") // hello   world
复制代码


如果我们想要知道这个字符串所占的字节长度,我们可以使用Go+的内置函数来计算。


println(len("helloword")) // 9
复制代码


如果我们要定义一个字符串的语法如下:


str := "helloword"
println(str) // helloword
println(len(str)) // 9
复制代码


字符串拼接


我们可以通过+实现两个字符串的拼接,将后面的字符串追加到前面字符串的后面。


str := "hello" + "word"
println(str) // helloword
str1 := "my name is \t"
str2 := "zs"
println(str1 + str2) // my name is      zs
复制代码


定义多行字符串


如果我们想要定义多行的字符串,Go+也是支持的。使用传统的""是不能跨行的,我们如果想要定义一个多行的字符串,可以使用反引号:`


const str = `第一行
第二行
第三行
`
println(str)
复制代码


在所有反引号之间的代码不会被编译器识别,只是作为字符串的一部分。


切片


概述


   切片是程序员对数组对象的抽象,在Go+里面,数组长度是不可变的,这样会造成我们使用集合的时候比较笨重,只有在固定的场所才可以使用。


Go+提供了一种较为灵活的数组,我们可以理解为动态数组,他对比数组来说长度是不固定的,同时可以追加元素,在追加元素的时候,可以动态扩容,他就是切片。


定义切片


   定义切片和定义变量一样,语法如下:


var 变量名 []切片类型
var age []int
复制代码

   

切片是不需要声明长度的,我们也可以使用内置函数——make()来定义切面。


var 变量名 []切片类型 = make([]类型, 长度)
var age []int = make([]int,10)
复制代码

 

 当然也可以简写。


变量名 := make([]类型, 长度)
age := make([]int,10)
复制代码

 

 这里的长度就是我们给这个切片赋值的初始长度。


切片初始化


   定义完了切片,我们要开始对我们定义的切片进行初始化操作了。初始化切片的语法如下:


切片名 := [] 切片类型 {初始化的值}
num :=[] int {1,2,3,4,5}
复制代码

 

这种方式最简单粗暴,直接初始化切片,这样我们就初始化了一个切片,切片里面有1,2,3,4,5这些值,切片的长度为5。


切片的两种内置函数


len()


   len()函数表示切片的长度,我们可以直接使用这个函数去获取这个切片的长度。


num :=[] int {1,2,3,4,5}
len(num) //5
复制代码


cap()


   有了长度以后,我们在实际开发中可能还需要查看当前切片的容量大小,我们可以使用cap()函数来进行查看。


num :=[] int {1,2,3,4,5}
cap(num) //5
复制代码


切片截取


   我们日常中还会使用的一个就是切片的截取,我们可以设置索引的方式来动态截取切片。


num :=[] int {1,2,3,4,5}
println("这是原始的切片",num) // 这是原始的切片 [1 2 3 4 5]
println("这是截取后的切片",num[0:2]) // 这是截取后的切片 [1 2]
复制代码

 

我们直接在切片后使用[开始的索引,结束的索引],即可动态截取切片,注意这个是含头不含尾,也就是意味着我们截取出来的只是包含起始值,但是不包含结束值。



相关文章
|
1天前
|
Go 索引
Go 语言中同一 slice 上的切片其底层数组是否是同一个
Go 语言中同一 slice 上的切片其底层数组是否是同一个
24 0
|
1天前
|
并行计算 Go C++
2182.构造限制重复的字符串(模拟 贪心 优先队列 C++ Go)
【2月更文挑战第19天】2182.构造限制重复的字符串(模拟 贪心 优先队列 C++ Go)
23 1
|
1天前
|
供应链 Go C语言
掌握Go语言:探索Go语言基础,字符串连接、关键字、空格、格式化字符串的重要性(7)
掌握Go语言:探索Go语言基础,字符串连接、关键字、空格、格式化字符串的重要性(7)
|
1天前
|
存储 Java Go
Go 语言切片如何扩容?(全面解析原理和过程)
Go 语言切片如何扩容?(全面解析原理和过程)
12 2
|
1天前
|
Go 数据处理
Go杂记1-切片Slice作为函数参数那点事儿
Go杂记1-切片Slice作为函数参数那点事儿
7 0
|
1天前
|
Go
|
1天前
|
Go
|
1天前
|
存储 程序员 Go
【Go语言专栏】Go语言中的切片与映射
【4月更文挑战第30天】Go语言中的切片和映射是两种强大数据结构。切片是动态数组,长度可变,由指针、长度和容量组成,支持索引、切片、追加和复制操作。映射是键值对结构,基于哈希表实现,支持插入、删除、查找和遍历。两者都是Go语言处理数据的利器,理解其内部实现和用法能提升编程效率。
|
1天前
|
编解码 JavaScript 前端开发
【专栏】介绍了字符串Base64编解码的基本原理和在Java、Python、C++、JavaScript及Go等编程语言中的实现示例
【4月更文挑战第29天】本文介绍了字符串Base64编解码的基本原理和在Java、Python、C++、JavaScript及Go等编程语言中的实现示例。Base64编码将24位二进制数据转换为32位可打印字符,用“=”作填充。文中展示了各语言的编码解码代码,帮助开发者理解并应用于实际项目。
|
1天前
|
Go C++ 容器
【Go语言快速上手(三)】数组, 切片与映射
【Go语言快速上手(三)】数组, 切片与映射