【Golang 计划】03 Go 基础二

142 阅读3分钟

「这是我参与2022首次更文挑战的第16天,活动详情查看:2022首次更文挑战

运算符

算术运算符

加(+)、减(-)、乘(*)、除(/)、取余(%)

关系运算符

== 、!=、>、>=、<、<=

逻辑运算符

&&  逻辑 AND 运算符,
||   逻辑 OR 运算符
!   逻辑 非运算符

位运算符

& 参与运算的两数各对应的二进位相与。(两位均为1才为1)
l 参与运算的两数各对应的二进位相或。(两位有一个为1就为1)
^ 参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。(两位不一样则为1)
<<  左移n位就是乘以2的n次方。“a<<b”是把a的各二进位全部左移b位,高位丢弃,低位补0。
>>  右移n位就是除以2的n次方。“a>>b”是把a的各二进位全部右移b

赋值运算符

= 简单的赋值运算符,将一个表达式的值赋给一个左值
+=  相加后再赋值
-=  相减后再赋值
*=  相乘后再赋值
/=  相除后再赋值
%=  求余后再赋值
<<= 左移后赋值
>>= 右移后赋值
&=  按位与后赋值
l=  按位或后赋值
^=  按位异或后赋值

下划线

  • 在 import 中,下划线作用是导入其他的package
  • 在代码中,是特殊标识符,用来忽视结果,相当于一个占位符
result , _ := os.open("XXXXX")
// 下划线是个占位符,只是用来标识这个结果,但是我们可能不需要

变量和常量

声明与初始化

#声明方式1
var 变量名 变量类型
var a int  
​
#初始化
var 变量名 类型 = 表达式
var name string = “元宇宙”
​
# 直接声明并初始化变量 
变量名 := 变量值
name  := "元宇宙"

注意: :=不能使用在函数外。

批量变量声明

#声明
var (
变量名1 变量类型
变量名2 变量类型
)
​
var (
  a int 
  str string
)
#初始化
var name, age = "jasen", 20

匿名变量

多重赋值时,想忽略某个值可以使用匿名变量,用下划线表示

  • 匿名变量不占用命名空间,不会分配内存,所以匿名变量之间不存在重复声明
func calResult(){
return "元宇宙"18
}
​
func main(){
  name, _ := calResult()
}

常量

使用关键字 const

# 单个常量定义
const pi = 3.1415
# 多个常量声明
const (
  pi = 3.1415
  e = 2.7182
)
# 同时声明多个时,且多个值都相同的值
const (
  n1 = 100
  n2 
  n3
)

iota

常量计数器,仅使用在常量表达式中。常用于定义枚举

const (
            n1 = iota //0
            n2        //1
            n3        //2
            n4        //3
        )
// 跳过某个值
const (
            n1 = iota //0
            n2        //1
            _
            n4        //3
        )  
// 中间插队插值     
const (
            n1 = iota //0
            n2 = 100  //100
            n3 = iota //2
            n4        //3
        )
const n5 = iota //0  iota在const关键字出现时将被重置为0
// 多个 itao 定义在一行
const (
            a, b = iota + 1, iota + 2 //1,2
            c, d                      //2,3
            e, f                      //3,4
)
 
 

基本类型

整型

  • 有符号 int8int16int32int64
  • 无符号 uint8uint16uint32uint64

uint8 ==> byte型

Int16 ==> C 语言中的 short 型

Int64 ===> long 型

浮点型

  • float32
  • float64

复数

complex64complex128

复数有实部和虚部,complex64的实部和虚部为32位,complex128的实部和虚部为64位

布尔值

bool类型进行声明布尔型数据,布尔型数据只有true(真)false(假)两个值.布尔类型变量的默认值为false。

字符串

使用双引号包围起来的内容

  • 字符串转义符
\r  回车符(返回行首)
\n  换行符(直接跳到下一行的同列位置)
\t  制表符
'  单引号
"  双引号
\   反斜杠
  • 多行字符串
# 使用反引号字符
s1 := `第一行
    第二行
    第三行
    `
  • 常用字符串的操作
str := "hello , 元宇宙"
len(str)  // 求长度
str1 + str2 // 使用 + 拼接字符串
fmt.Sprintf  // sprintf 拼接字符串
str.Split // 分割
str.Contains // 判断是否包含
str.HasPrefix,  // 前缀判断
str.HasSuffix  // 后缀判断
str.Index()  // 子串出现的位置
str.LastIndex() // 子串出现的位置
str.Join(a[]string, sep string) // join操作
  • 修改字符串
// 强制类型转换--byte型
byteS1 := []byte(str)
​
// 强制类型转换-- rune类型
runeS2 := []rune(str)

通过类型转换然后对单个字符修改,将其转换成[]rune或[]byte,完成后再转换为string。但是这种转换方式都会重新分配内存,并复制字节数组

byte 和 rune 类型

字符串是由很多个字符组成的,所以遍历字符串元素可以获取单个字符,字符使用单引号。

  • uint8类型,也是 byte型,是一个 ascii 码的一个字符
  • rune 类型 是一个 utf-8 字符,其实是一个 int32

\