《每天用对比的思想学点 golang》PHP Python 对比 Golang 中的数组 切片 map
看表
类型/语言 | 数组 | 切片 | map |
---|---|---|---|
PHP | 数组能够在单个变量中存储多个值,单维数组与其他语言差不多,但是多维数组就是不一样了。 | 没有切片概念,通过单维数组就完事。可以使用 [] 来定义数组,实现同样的效果 |
没有map概念,就是多维数组 |
Python | 没有数组的概念,通过元组,list实现。注意,元组是不可修改的。 | 就是咱们的list | 就是咱们的dict |
Golang | 数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,这种类型可以是任意的原始类型例如整形、字符串或者自定义类型。注意,数组长度不可以改变 | 切片是对数组的抽象,可以改变长度。 | map 是一种无序的键值对的集合 |
具体例子实现
php
数组
$cars=array("Volvo","BMW","Toyota");
echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . ".";
切片
无
没有切片概念,通过单维数组就完事。可以使用 []
来定义数组,实现同样的效果
map
// 二维数组:
$cars = array (
array("Volvo",100,96),
array("BMW",60,59),
array("Toyota",110,100)
);
打印如下:
Array
(
[0] => Array
(
[0] => Volvo
[1] => 100
[2] => 96
)
[1] => Array
(
[0] => BMW
[1] => 60
[2] => 59
)
[2] => Array
(
[0] => Toyota
[1] => 110
[2] => 100
)
)
python
数组
没有数组的概念,通过元组,list实现。注意,元组是不可修改的。
list:
list1 = ['physics', 'chemistry', 1997, 2000]
list2 = [1, 2, 3, 4, 5, 6, 7 ]
print "list1[0]: ", list1[0]
print "list2[1:5]: ", list2[1:5]
元组:
tup1 = ('physics', 'chemistry', 1997, 2000)
tup2 = (1, 2, 3, 4, 5, 6, 7 )
print "tup1[0]: ", tup1[0]
print "tup2[1:5]: ", tup2[1:5]
切片
就是咱们的list ,例子在上面
map
就是咱们的dict
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
print "dict['Name']: ", dict['Name']
print "dict['Age']: ", dict['Age']
golang
数组
package main
import "fmt"
func main() {
var n [10]int /* n 是一个长度为 10 的数组 */
var i,j int
/* 为数组 n 初始化元素 */
for i = 0; i < 10; i++ {
n[i] = i + 100 /* 设置元素为 i + 100 */
}
/* 输出每个数组元素的值 */
for j = 0; j < 10; j++ {
fmt.Printf("Element[%d] = %d\n", j, n[j] )
}
}
执行结果如下:
Element[0] = 100
Element[1] = 101
Element[2] = 102
Element[3] = 103
Element[4] = 104
Element[5] = 105
Element[6] = 106
Element[7] = 107
Element[8] = 108
Element[9] = 109
切片
切片是可索引的,并且可以由 len() 方法获取长度。
切片提供了计算容量的方法 cap() 可以测量切片最长可以达到多少。
package main
import "fmt"
func main() {
var numbers = make([]int,3,5)
printSlice(numbers)
}
func printSlice(x []int){
fmt.Printf("len=%d cap=%d slice=%v\n",len(x),cap(x),x)
}
结果如下:
len=3 cap=5 slice=[0 0 0]
map
package main
import "fmt"
func main() {
var countryCapitalMap map[string]string /*创建集合 */
countryCapitalMap = make(map[string]string)
/* map插入key - value对,各个国家对应的首都 */
countryCapitalMap [ "France" ] = "巴黎"
countryCapitalMap [ "Italy" ] = "罗马"
countryCapitalMap [ "Japan" ] = "东京"
countryCapitalMap [ "India " ] = "新德里"
/*使用键输出地图值 */
for country := range countryCapitalMap {
fmt.Println(country, "首都是", countryCapitalMap [country])
}
/*查看元素在集合中是否存在 */
capital, ok := countryCapitalMap [ "American" ] /*如果确定是真实的,则存在,否则不存在 */
/*fmt.Println(capital) */
/*fmt.Println(ok) */
if (ok) {
fmt.Println("American 的首都是", capital)
} else {
fmt.Println("American 的首都不存在")
}
}
代码输出结果:
France 首都是 巴黎
Italy 首都是 罗马
Japan 首都是 东京
India 首都是 新德里
American 的首都不存在
完毕谢谢大家的观看
部分代码引用站点
🙏谢谢
防爬虫说明
禁止 学习某地爬虫,知乎爬虫,CSDN 爬虫。
本文,首发在 learnku 社区。
@author
汪春波(www.shxdledu.cn)
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: