go20/day02/array/main.go
yumaojun03 93e864c191 ```
feat(array): 添加数组遍历和排序功能及切片基础内容

添加了数组的range遍历方式详细说明,包括通用遍历法和专用遍历法的对比,
实现了冒泡排序函数MySort和指针版本MySortV2,完善了数组作为函数参数的
示例代码。同时新增了切片基础知识,包括slice结构定义、容量和长度概念,
以及切片与数组的区别说明。

chore: 初始化DevOps项目目录结构

创建了DevOps平台的整体目录框架,包含server、agent、web等子模块的
基础README文件,为后续DevOps功能开发奠定结构基础。
```
2026-01-11 14:55:03 +08:00

97 lines
2.2 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package main
import (
"fmt"
)
func main() {
/*
数组拷贝
*/
// ipv4 4字节表示一个ipv4地址, 简短声明: 127.0.0.1
ip := [4]byte{127, 0, 0, 1}
fmt.Println("ip1:", ip)
// 如何copy这个数组, 这个赋值有没有完成copy
// 怎么理解数组的复制 是值拷贝
//
// a := 1
// b := a
// b = 2
// fmt.Println("a:", a)
// fmt.Println("b:", b)
// 数组: 一片连续的地址控制
// ip2 := ip ip 有自己连续的地址空间)
// ip2[4]byte{} (ip2 申请的连续地址)
// Go 默认是值拷贝(重要)
// ip 的值 传递给 ip2
// ip2 和 ip 是两个不同的数组, 互不影响
ip2 := ip
fmt.Println("ip2:", ip2)
// 修改ip2 不会影响ip
ip2[0] = 10
fmt.Println("ip1:", ip)
fmt.Println("ip2:", ip2)
/*
数组遍历
*/
// 1. 通用遍历法(不局限于数组, 切片, map, 字符串)
// 对象的编号,通常叫索引, index (0, ...)
// (0, 1, 2, 3)
// 1. for : 定义变量(开始元素的索引0), 条件(循环结束条件, 不满足条件,结束循环), 变化(索引加1 找下一个元素)
// len 函数: 求数组的长度
// 127 0 0 1
// for i := 0; i < len(ip); i++ {
// fmt.Println(ip[i])
// }
// range 专用遍历法, 语法糖,更简洁, 自动处理索引的变化
// range len(ip) range 4
// range [0, 1, 2, 3]
// for i := range len(ip) {
// fmt.Println(ip[i])
// }
// 专门针对数组, 切片, map, 字符串的遍历
// 最常用的写法
for i, v := range ip {
fmt.Println(i, v)
}
// 排序
arr1 := [5]int{3, 5, 1, 4, 2}
sorted_arr1 := MySort(arr1)
fmt.Println("source arr1:", arr1)
fmt.Println("sorted_arr1:", sorted_arr1)
// 数组指针
MySortV2(&arr1)
fmt.Println("source arr1:", arr1)
}
func MySort(arr [5]int) [5]int {
// 冒泡排序
for i := 0; i < len(arr)-1; i++ {
for j := 0; j < len(arr)-1-i; j++ {
if arr[j] > arr[j+1] {
// 值交换: a, b = b, a
arr[j], arr[j+1] = arr[j+1], arr[j]
}
}
}
return arr
}
func MySortV2(arr *[5]int) {
// 冒泡排序
for i := 0; i < len(arr)-1; i++ {
for j := 0; j < len(arr)-1-i; j++ {
if arr[j] > arr[j+1] {
// 值交换: a, b = b, a
arr[j], arr[j+1] = arr[j+1], arr[j]
}
}
}
}