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 函数名(参数列表) 返回值类型 {
         函数体
     }
     ```

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

相关推荐
联犀4 小时前
纯 Go 的 CAD 开源库 go-cad:直接解析 DWG/DXF,现在也能导出 PDF
开发语言·golang·pdf
FungLeo8 小时前
成为全栈·Go 后端篇·三轮代码审阅之后:把可读性和证据做成工程规则
golang·go·ast·静态检查·成为全栈·代码审阅
联犀11 小时前
联犀 Go SIMD 实战:视频转码从 16.5ms 到 5.46ms
开发语言·golang·音视频
紧跟先前的步伐1 天前
Go AI Agent 实战 28|Agent 的预算、超时与停止条件
开发语言·人工智能·后端·ai·golang
利威尔xu1 天前
2026-11-05-Go内存管理面试
面试·golang
Zenova EdgeOS3 天前
Go 工业边缘错误处理实战:用 errors 构建可追溯错误链
开发语言·数据库·golang
JavaPub-rodert3 天前
从零搭建通用管理后台:ShiyuAdmin 的 Go、React 与 RBAC 实践
开发语言·react.js·golang
microrain3 天前
SagooIoT 的数据接入层只有四张表,却能接住三种外部数据
物联网·golang·数据建模·sagooiot
fly-iot3 天前
【FDE知识库】(4):企业知识库怎么选型,开源知识库分享几个,选择开源协议友好的版本,开发wiki-go项目
golang·开源·开源协议
福大大架构师每日一题3 天前
excelize v2.11.1发布:Go 1.26.0起步,16项安全修复与嵌入对象能力全面升级
开发语言·安全·golang