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

举报
XiaoLin_Java 发表于 2022/03/27 20:58:30 2022/03/27
【摘要】 赋值运算符 概述赋值运算符就是可以直接进行赋值的一种运算符。 分类我们列出了Go+中所有的赋值运算符。运算符描述实例=简单的赋值运算符,将一个表达式的值赋给一个左值C = A + B 将 A + B 表达式结果赋值给 C+=相加后再赋值C += A 等于 C = C + A-=相减后再赋值C -= A 等于 C = C - A*=相乘后再赋值C *= A 等于 C = C * A/=相除后...

赋值运算符

概述

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

分类

我们列出了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]

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

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。