golang 数组、切片、map

一、数组(类似python的list)

数组的长度一旦定义了就不能动态增长。并且存储的数据类型必须相同。

创建方法:

var 数组名 [长度]数据类型

例如:

package main
import "fmt"

func main(){
    var l [5]int //定义l名字,长度为5,数据类型为int的数组
    l[0] = 1    //赋值
    l[1] = 2    
    l[2] = 3
    l[3] = 4
    fmt.Println(l)  
    fmt.Println(l[2])
    fmt.Println(l[1:3]) //输出1到3的数组
    fmt.Println(l[0:]) //0到结尾
    fmt.Println(l[:3])  //0到3

}

##结果##
[1 2 3 4 0]
3
[2 3]
[1 2 3 4 0]
[1 2 3]

  

数组的四种初始化方式

例如:

var s1 [3]int = [3]int{1,2,3}
fmt.Println("s1",s1)
var s2 [4]int = [...]int{5,6,7,8} //[...]是固定写法
fmt.Println("s2",s2)
var s3 = [2]int{9,10} //第一种的简化
fmt.Println("s3",s3)
var s4 = [...]int{3:43,1:41,0:40,2:42} //类似键值对
fmt.Println("s4",s4)



##结果##
s1 [1 2 3]
s2 [5 6 7 8]
s3 [9 10]
s4 [40 41 42 43]

  

 数组的遍历

例如:

var s4 = [...]int{3:43,1:41,0:40,2:42} //类似键值对
fmt.Println("s4",s4)
	
for index,value := range s4{
fmt.Println(index,value)
}

#结果##
0 40
1 41
2 42
3 43

  

 

二、slice切片

1、切片是数组的引用
2、切片的使用类似数组,如遍历
3、切片的长度是可变的

创建语法
var 切片名 []类型
如:

var qiepian []int

  

切片例子:

###例子一
var suzhu [4]int = [...]int{5,6,7,8} slice := suzhu[1:4] //1到4的值,不包含4 fmt.Println(suzhu) fmt.Println(slice) fmt.Println("切片的容量",cap(slice)) ##结果 [5 6 7 8] [6 7 8] 切片的容量 3

###例子二、使用make创建切片 var slice []int = make([]int,4,10) //类型,大小(长度),容量(可选),容量必须大于长度 slice[0] = 10 slice[1] = 11 fmt.Println(slice) ##结果## [10 11 0 0] ###例子三 var slice []int = []int {2,4,6} fmt.Println(slice) ##结果## 2 4 6


切片的append追加

例如:

var slice []int = []int {2,4,6}
fmt.Println(slice)
//使用append直接追加切片内容(类似python list的append)
slice = append(slice,8,10)
fmt.Println(slice)
slice = append(slice,slice...) //追加切片,...是固定写法
fmt.Println(slice)

###结果###
[2 4 6]
[2 4 6 8 10]
[2 4 6 8 10 2 4 6 8 10]

  

切片的copy操作

使用copy内置函数

例如:

var slice []int = []int {2,4,6}
fmt.Println(slice)
var slice2 []int = make([]int,5) 
fmt.Println(slice2)
copy(slice2,slice) //将slice复制给slice2
fmt.Println(slice)
fmt.Println(slice2

##结果##
[2 4 6]
[0 0 0 0 0]
[2 4 6]
[2 4 6 0 0]

  

使用切片改变字符串的内容

例子:

var str string = "hello"
fmt.Println(str)
arr := []byte(str)
arr[1] = 'a' //转成字符串
arr1 := []rune(str) //中文转换
arr1[0] = '狗' 
fmt.Println(arr)
str = string(arr)
fmt.Println(str)
str = string(arr1)
fmt.Println(str)

##结果##
hello
[104 97 108 108 111]
hallo
狗ello

  

 

map(类似python的dict)

map是key-value数据结构(类似python的dict)
map是无序存储的

 

创建map语法

var map 变量名 map[keytype]valuetype

如:

var m1 map[string]string
var m2 map[string]int
var m3 map[int]string
var m4 map[string]map[string]string

  

使用例子:

 

package main
import "fmt"

func main(){
    var m1 map[string]string
    //在使用map前,需要先make,make的作用技术给map分配数据空间
    m1 = make(map[string]string)
    m2 := map[string]string{  //使用方式二
        "a1" : "q1",
        "a2" : "a2",
    }
    m1["s1"] = "亚索"
    m1["s2"] = "盖伦" 
    fmt.Println(m1)
    fmt.Println(m1["s1"])
    fmt.Println(m2)
}

###结果###
map[s1:亚索 s2:盖伦]
亚索
map[a1:q1 a2:a2]

  

 

map的增删改查

增、改

map[key] = value //没有就增加,存在就修改

delete(map,key)

map[key]   //对应的value,和python的dict一样

 

转载于:https://www.cnblogs.com/zhangb8042/p/10511779.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值