Golang 切片slice与Map

Golang

切片(Slice)
我看很多中文的教学都是翻切片,我也不知道是不是正确的说法,总之也附上英文的单词了,就GOGO吧!

还记得前一篇宣告阵列的时候,我们会使用var n [10]int 给阵列一个长度,跟某些语言不同的是 阵列一旦宣告後就无法改变长度了,所以此时如果有这个需求的话,就需要试看看Slice

如果忘记的,代表前篇连打三次还是不够的

Slice是可以动态改变长度的,make() 函数来创建切片并且使用append来增加

package main

import "fmt"

func main() {
/*
   var n [10]int 
   var i int
   

   //这里会出事,因为我们宣告10,但给了11  
   //runtime error: index out of range [10] with length 10  
   for i = 0; i < 11; i++ {
      n[i] = i 
       fmt.Printf("this is slice %d \n" , n[i])
   }
*/
    fmt.Printf("this is slice \n")
    slice := make([]int, 5)
 
    for i := 0; i < len(slice); i++ {
        
        slice[i] = i
	 fmt.Printf("this is slice %d \n" , slice[i])
    }
    slice = append(slice, 5, 6, 7)
    fmt.Printf("this is slice %d \n" , slice[5])
}

Len()与cap()
len()是长度,cap() 是最大长度

fmt.Println(len(slice))
fmt.Println(cap(slice))

宣告时,slice :=make([]int,len,cap)

Copy
copy(slice2, slice)与slice2:= slice 这两者是不同的唷,可以玩看看之间的差异。
试看看

copy(slice2, slice)
slice = append(slice, 5, 6, 7)

slice2:= slice
slice = append(slice, 5, 6, 7)

这样输出看slice2,看会有怎样的结果

Map (集合)

package main

import "fmt"

func main() {

fmt.Println("try map")

//建立一个型别为 map 的变数m,其中的 key 都会是 string,value 都是 int
 m := make(map[string]int)
 m["Tom"] = 16
 m["Many"] = 20
    for k, v := range m {
        fmt.Println(k, "value is", v)
    }

}

Len与delete
顾名思义,一样可以取得长度,如果要删除的话就使用delete就可以罗~

fmt.Println(len(m)) // 2
delete(m, "Tom")
fmt.Println(len(m)) // 1

另外golang还有一个很类似的东西是Structure,就看未来有没有时间补了(大致上就是可以里面的属性可以不同)

快乐的时间总是快得特别快 又到了说掰的时候啦!


<<:  CSS基础介绍(2)

>>:  2021-Day1. 开箱 Google Cloud Jam 活动背包

装置在Windows上未就绪错误如何重新连接您的磁碟机

装置未就绪是Windows作业系统一个常见的错误。在Windows OS的所有版本中均会看到此错误。...

[Day16] Arbitrary File Upload

前言 上班倒数 QQ 正文 概念 不管你是要缴交各种报名资料,申请某公司职位或是各种社交帐号和通讯软...

AE-LED流动效果2-Day20

接续昨天的练习~ 1.然後我们再新增一个Comp,这次把高度改为1080px 2.并把刚刚的Comp...

[职场]新工程师报到,如何协助他成为有效战力

我一定要把你带好,如果我不把你拉上来,那谁把我推上去。 每间公司在新人教育训练上,愿意投资的资源落...

【Day 23】Go 基础小笔记 IV:goroutine、channel

身为并发(concurrency)小能手的 Go 的重要特色 有了 channel 好像几乎不需要...