前言:
目前大家对“c语言获取一行”可能比较关切,兄弟们都想要剖析一些“c语言获取一行”的相关资讯。那么小编在网上搜集了一些有关“c语言获取一行””的相关内容,希望看官们能喜欢,咱们一起来学习一下吧!数组 Arrays
在 Go 中,数组是特定长度的元素的编号序列:
package mainimport "fmt"func main() { // 声明一个长度为5的数组 var a [5]int fmt.Println("emp:", a) // 设置数组元素值 a[4] = 100 fmt.Println("set:", a) fmt.Println("get:", a[4]) // 获取数组长度 fmt.Println("len:", len(a)) // 初始化并赋值 b := [5]int{1, 2, 3, 4, 5} fmt.Println("dcl:", b) // 多维数组 var twoD [2][3]int for i := 0; i < 2; i++ { for j := 0; j < 3; j++ { twoD[i][j] = i + j } } fmt.Println("2d: ", twoD)}切片 Slices
Slice可以认为是更强大的数组:
make:创建切片;append:扩展切片;copy:拷贝切片;slice:截取切片;
package mainimport "fmt"func main() { // 使用make创建切片 s := make([]string, 3) fmt.Println("emp:", s) // 切片的set和get方式 s[0] = "a" s[1] = "b" s[2] = "c" fmt.Println("set:", s) fmt.Println("get:", s[2]) // 获取切片的长度 fmt.Println("len:", len(s)) // 给切片增加新的值,但这里会产生新的slice s = append(s, "d") s = append(s, "e", "f") fmt.Println("apd:", s) c := make([]string, len(s)) copy(c, s) fmt.Println("cpy:", c) l := s[2:5] fmt.Println("sl1:", l) l = s[:5] fmt.Println("sl2:", l) l = s[2:] fmt.Println("sl3:", l) // 像初始化数组一样初始化切片 // 唯一区别在于,数组初始化时有固定长度 t := []string{"g", "h", "i"} fmt.Println("dcl:", t) // 同样存在多维度 twoD := make([][]int, 3) for i := 0; i < 3; i++ { innerLen := i + 1 twoD[i] = make([]int, innerLen) for j := 0; j < innerLen; j++ { twoD[i][j] = i + j } } fmt.Println("2d: ", twoD)}数组和切片的区别
在Go语言中,数组(Array)和切片(Slice)都是用于存储一组数据的数据结构。它们的主要区别在于以下几个方面:
长度固定 vs 可变长度:数组的长度在定义时就已经确定,并且无法在运行时修改;而切片的长度可以动态增加或减少。内存分配方式:数组在声明时会被分配一段静态内存空间,而切片则是一个动态的数据结构,它的底层内存可能会被自动扩容或缩容。传递方式:数组是值类型,传递数组时会进行一次完整的复制;而切片是引用类型,传递切片时只会复制一个指针和长度,不会复制底层的数据。初始化方式:数组可以使用静态初始化或动态初始化的方式进行初始化;而切片只能通过make函数或字面量的方式进行初始化。
下面是一个简单的示例,演示了数组和切片的基本用法和区别:
func main() { // 静态初始化数组 var arr [3]int = [3]int{1, 2, 3} fmt.Println(arr) // 输出 [1 2 3] // 动态初始化数组 var arr2 [3]int arr2[0] = 1 arr2[1] = 2 arr2[2] = 3 fmt.Println(arr2) // 输出 [1 2 3] // 切片的创建和初始化 s := make([]int, 3) // 创建一个长度为3的切片 s[0] = 1 s[1] = 2 s[2] = 3 fmt.Println(s) // 输出 [1 2 3] // 切片的动态扩容 s = append(s, 4) fmt.Println(s) // 输出 [1 2 3 4]}
在上面的示例中,我们首先演示了数组的静态初始化和动态初始化方式,然后演示了切片的创建和初始化方式,最后演示了切片的动态扩容过程。可以看到,切片的使用非常灵活,可以方便地进行动态扩容或缩容,而数组则只能使用静态初始化或动态初始化的方式进行初始化,并且长度固定,无法动态修改。
每日一Tip
Go 中有序集合最常用Slice切片,无脑使用即可。
标签: #c语言获取一行