Golang基础

数据类型

复制代码
  ### 基本数据类型

  1. 布尔类型(bool):取值为true或false 。 声明的时候,默认值是 false
  2. 整数类型(int):包括int8、int16、int32、int64等。声明的时候,默认值 是 0
  3. 浮点数类型(float):包括float32和float64。 声明的时候,默认值是 0.0
  4. 字符串类型(string):由一串字符组成 。 声明的时候,默认值是 空字符串
  5. 字节类型(byte):相当于uint8。
复制代码
  ### 复合数据类型

  1. 数组(array):固定长度的数据结构
     1. go 语言中的数组实际用得比较少,因为被限制的太死了,无法动态增加参数,所以一般用切片来代替
     2.

        ```Go
        var nameList [3]string = [3]string{"测试", "代码", "功能"}
        	fmt.Println(nameList)
        	fmt.Println("下标为0的元素为:", nameList[0])
        	fmt.Println("下标为1的元素为:", nameList[1])
        	fmt.Println(len(nameList))
        	fmt.Println("最后一位元素为:", nameList[len(nameList)-1])
        ```

  2. 切片(slice):可变长度的数据结构;其实就是数组
     1. 切片的定义
        1.

           ```Go
           var sliceList1 []string = []string{}
           var sliceList2 = make([]string, 0)
           ```

     2. 追加元素是通过 append 方法实现
     3.

        ```Go
        // 切片,是由数组演变而来的,可以动态添加长度,resize,可以方便的操作数组中的元素
        // 切片的声明方式: var 变量名 []类型 = 数组名[开始索引:结束索引]
        // 切片的长度是由结束索引减去开始索引,如果结束索引为-1,则表示到数组末尾
        // 切片的长度不能超过数组的长度,如果超过,则会自动截取到数组的长度
        // 切片的长度不能为负数,如果为负数,则会自动变成0
        var sliceList []string
        sliceList = nameList[0:2]            // 表示截取数组,并且返回新的数据
        sliceList = append(sliceList, "测试2") // 追加元素到切片中
        sliceList = append(sliceList, "测试3")
        fmt.Println(sliceList)
        fmt.Println(sliceList == nil) // 当切片长度为零的时候,条件成立
        ```

  3. 哈希表(map):[键值对](https://www.php.cn/zt/49710.html "键值对")数据结构
     1. map 的声明 有两种方式:一种是直接声明 var userMap map\[int\]string = map\[int\]{ 1: "测试代码", 2:"第二个测试代码" };还有个一个是使用 make 函数声明一个空的 map 对象,具体是 var Map = make(map\[string\]string)
     2.

        ```Go
        package main

        import "fmt"

        func main() {
        	var userMap map[int]string = map[int]string{
        		1: "测试代码",
        		2: "第二个测试代码",
        		3: "第三个测试代码",
        	}
        	// map 需要注意的点
        	// 当获取的下标数据不存在的时候,默认值是属性值的默认值,这里的 string 也就是空字符串
        	// 当真的想要看的时候,使用 fmt.Println("%#v\n", userMap[100])  这样,就能看到打印的字符串
        	// 还有一种方法
        	fmt.Println("map 的第一个元素:", userMap[2])
        	value, ok := userMap[100]
        	fmt.Println("ok", ok)
        	fmt.Println("value", value)

        	// 删除值
        	delete(userMap, 2)
        	fmt.Println("删除后的 map:", userMap)

        	// 声明一个空的 map
        	var aMap = make(map[string]string)
        	// 不可行的写法  var aMap = map[string]string   这个时候,aMap 初始值是一个 nil ,所以不能set 值进去
        	aMap["name"] = "张三"
        	fmt.Println("aMap:", aMap)

        }
        ```

  4. 结构体(struct):自定义数据结构
     1. 结构体其实就是对象,可以包含 属性和方法;Go 语言中没有类的概念,但是可以通过 结构体实现类,也就是面向对象

运算符

复制代码
  ### 算术运算符

  1. 加法(+):将两个操作数相加
  2. 减法(-):将两个操作数相减
  3. 乘法(\*):将两个操作数相乘
  4. 除法(/):将两个操作数相除
  5. 取余(%):将两个操作数相除并返回余数
复制代码
  ### 关系运算符

  1. 等于(==):比较两个操作数是否相等
  2. 不等于(!=):比较两个操作数是否不相等
  3. 大于(\>):比较两个操作数是否大于
  4. 小于(
  5. 大于等于(\>=):比较两个操作数是否大于或等于
  6. 小于等于(\<=)
复制代码
  ### 逻辑运算符

  1. 与(\&\&):如果两个操作数都为真,则返回真,否则返回假
  2. 或(\|\|):如果两个操作数有一个为真,则返回真,否则返回假
  3. 非(!):将操作数取反
复制代码
  ### 位运算符(实战比较少用)

  1. 与(\&):将两个操作数的二进制位进行与运算
  2. 或(\|):将两个操作数的二进制位进行或运算
  3. 异或(\^):将两个操作数的二进制位进行异或运算
  4. 左移(
  5. 右移(\>\>):将操作数的二进制位向右移动指定位数

控制语句

复制代码
  ### **if 语句**

  1.

     ```Go
     if 条件 {
         语句块
     } else {
         语句块
     }
     ```
复制代码
  ### switch 语句

  1.

     ```Go
     switch 表达式 {
         case 值1:
             语句块
         case 值2:
             语句块
         ...
         default:
             语句块
     }
     ```
复制代码
  ### for 语句

  1.
     1.

        ```Go
        // 九九乘法表
        	for i := 1; i <= 9; i++ {
        		for j := 1; j <= i; j++ {
        			fmt.Printf("%d * %d = %d\t", i, j, i*j)
        		}
        		fmt.Println()
        	}
        ```

函数

复制代码
  ### **函数关键字**

  1. **​​​​​​​**

     ```Go
     func 函数名(参数列表) 返回值类型 {
         函数体
     }
     ```

​​​​​​​还在更新中​​​​​​​

相关推荐
牛奔12 小时前
Go 如何避免频繁抢占?
开发语言·后端·golang
不老刘16 小时前
LiveKit 本地部署全流程指南(含 HTTPS/WSS)
golang·实时音视频·livekit
Tony Bai1 天前
再见,丑陋的 container/heap!Go 泛型堆 heap/v2 提案解析
开发语言·后端·golang
念何架构之路1 天前
Go进阶之panic
开发语言·后端·golang
先跑起来再说1 天前
Git 入门到实战:一篇搞懂安装、命令、远程仓库与 IDEA 集成
ide·git·后端·elasticsearch·golang·intellij-idea
Tony Bai1 天前
“Go 2,请不要发生!”:如果 Go 变成了“缝合怪”,你还会爱它吗?
开发语言·后端·golang
灰子学技术2 天前
go response.Body.close()导致连接异常处理
开发语言·后端·golang
源代码•宸2 天前
大厂技术岗面试之谈薪资
经验分享·后端·面试·职场和发展·golang·大厂·职级水平的薪资
有代理ip3 天前
Python 与 Golang 爬虫的隐藏优势
爬虫·python·golang