今天看啥  ›  专栏  ›  饱腹百科

go语言的魔幻旅程04-星星之火,可以燎原

饱腹百科  · 掘金  ·  · 2021-02-26 16:40
阅读 70

go语言的魔幻旅程04-星星之火,可以燎原

咬定青山不放松,立根原在破岩中

人生在世,每个人总有一段锲而不舍付出的时光,有的人可能是因为学业,也有的人可能是因为金钱,更有的人可能是因为新中的那个她,无论最初的动机是什么,一旦认定某件事情,绝大部分的人必定会全身心的投入。然而坚持这件事情就像爬山,爬的山峰越高,坚持下来的人越少,最后能登上山顶观揽美景的总归还是少部分的人。这个世界从盘古开天僻地的第一天开始,就注定人生赢家只会是极少数人,大部分的人不是依附于强者,就是沦为社会的底层。无论人生的命运如何,大部分的人还是难以避免依附于其他人的命运,而仅有的改变自身命运的机会,不是消失于日复一日的懒惰懈怠中,就是迷失于灯红酒绿之中,随着时间的推移不是在时间的车轮面前泯为众人就是消失在岁月的浸淫中。人生如此,编程语言的学习亦如此,简单的编程知识瞧不上,非得整天费劲心思琢磨搞些花里胡哨的知识点来卖弄技巧,殊不知, 咬定青山不放松,立根原在破岩中。没有牢固的基础,仅仅凭借花里唿哨的的编程技巧,编程的大厦必定注定难以抵御狂风暴雨的侵袭。


数组和切片

数组定义:数组是具有相同唯一类型的一组已经编号且长度固定的数据线序列,可以是任意的原始类型例如整形、字符串、或者其他定义的类型。

切片定义:切片是针对数组的一个连续片段的引用,因而切片是一个引用类型(本质上可以将切片理解为一个长度可变的数组)。

1、数组

//数组的声明
var identifier [len]type

var arr [10]string

var arr[10]int
...

//数组值的三种初始化方式
var arrAge = [5]int{18, 20, 15, 22, 16}

var arrLazy = [...]int{5, 6, 7, 8, 22}

var arrKeyValue = [5]string{3: "Chris", 4: "Ron"}

//数组的两种遍历方式

func main() {
    var arr1 [5]int
    for i:=0; i < len(arr1); i++ {
        fmt.Printf("Array at index %d is %d\n", i, arr1[i])
    }
}
 
 func main() {
	a := [...]string{"a", "b", "c", "d"}
	for i, v := range a {
		fmt.Println(i, v)
	}
}

//多维数组
var [10]...[10]
复制代码

2、切片

//切片的定义
var identifier []type

//切片的创建,其中的type为切片的类型,len为切片的长度
//cap为切片的容量
slice  := make([]type, len, cap)
s := make([]int, 10)

//切片的二种遍历方式

func main() {
	a := []string{"a", "b", "c", "d"}
	for i := 0; i < len(a); i++ {
		fmt.Println(i)
	}
}

func main() {
	a := []string{"a", "b", "c", "d"}
	for i, v := range a {
		fmt.Println(i, v)
	}
}

//切片重组
 s := make([]int, 0, 10)

//切片的截取
s := s[start:end]

//复制与追加
s1_from := []int{1, 2, 3}
s1_to := make([]int, 10)

//复制元素的数量
n := copy(s1_to, s1_from)

//元素的追加
sl3 := []int{1, 2, 3}
sl3 = append(sl3, 4, 5, 6)
复制代码

小结

星星之火可以燎原,虽然关于数组和切片部分的内容的总结的相对简单,但是总的而言两者还是相对比较重要的知识点,特别是针对与切片这一知识点的掌握上,后续无论是函数的学习,还是通道相关的内容多会涉及到切片的运用,如果时间允许的情况下还是非常建议多花点时间在切片上学习上,相对而言数组的重要性反而相对于切片的重要性要低一些。不过既然是学习一门新的编程语言,还是建议两者都竟可能的掌握清楚,弄明白两者相关知识点的运用,不要沦落到“书到用时方恨少”的情形。




原文地址:访问原文地址
快照地址: 访问文章快照