大家好,我是码农先森。
简介
在 PHP 语言中数组的使用很简单,易用程度简直变态,无论多么复杂的数据格式都可以用数组来表达,可以随心所欲的使用。
<?php
$array = [1, 'name', ['sex' => '男']];
print_r($array);
$array = [];
$array[0] = 'name';
$array[1] = 1;
print_r($array);
在 Go 语言中数组是一段固定长度的连续内存区域,在声明数组时,要先确定数组的长度,而且数组中的元素只能使用一种类型。
package main
func main(){
// [4] 代表数组长度为 4,string 是数组中元素的类型,花括号中的是数组元素
array1 := [4]int{"a", "b", "c", "d"}
fmt.Print(array1)
// 用 ... 方法来省略掉中括号的数值,编译器会自动确定数组中的元素。
array2 := [...]string{"a", "b", "c", "d"}
fmt.Print(array2)
}
遍历
在 PHP 语言中通过 foreach 进行遍历。
<?php
$array = ["a", "b", "c", "d"];
foreach($array as $k => $v) {
echo $v;
}
在 Go 语言中通过 range 进行遍历。其中 “_” 来代替掉原来的变量 k,它指的是把当前赋的值忽略,不然编译会报错误。
package main
import (
"fmt"
)
func main(){
array := [...]string{"a", "b", "c", "d"}
for _, v := range array {
fmt.Print(v)
}
}
截取
在 PHP 语言中对数组截取使用 array_slice 函数即可。
<?php
// 从数组的第二个元素开始,截取两个元素
$array = ["a", "b", "c", "d"];
print_r(array_slice($array, 1, 2));
在 Go 语言中可以直接取出第二到第四个元素之间的数据。
package main
import (
"fmt"
)
func main(){
array := [...]string{"a", "b", "c", "d"}
fmt.Print(array[1:3])
}
追加
在 PHP 语言中为数组添加一个新元素,使用 array_push 函数即可。
<?php
$array = ["a", "b", "c", "d"];
array_push($array, 6);
print_r($array);
在 Go 中语言中使用 append 函数,这里实际上是对切片的添加操作,而不是数组。
package main
import (
"fmt"
)
func main(){
array := []string{"a", "b", "c", "d"}
array = append(array, 6)
fmt.Print(array)
}
删除
在 PHP 语言中删除数组元素非常简单,直接使用 unset 函数即可。
<?php
$array = ["a", "b", "c", "d"];
unset($array[1]);
print_r($array);
在 Go 语言中没有提供原生的删除方法,只能利用切片的特性,截取部分的切片来实现删除的操作,这种方式使用起来比较蹩脚。
package main
import (
"fmt"
)
func main(){
index := 1
array := []string{"a", "b", "c", "d"}
array = append(array[:index], array[index+1:]...)
fmt.Print(array)
}
合并
在 PHP 语言中可以使用 array_merge 函数来合并数组。
<?php
$array1 = ["a", "b"];
$array2 = ["c", "d"];
$result = array_merge($array1, $array2);
print_r($result);
在 Go 语言中要合并两个切片,可以使用 append 函数。
package main
import "fmt"
func main() {
array1 := []string{"a", "b"}
array2 := []string{"c", "d"}
result := append(array1, array2...)
fmt.Print(result)
}
总结
对于长期写 PHP 的朋友来说,习惯了随性所欲的使用数组。转到 Go 语言之后会被强类型所困扰,使用数组之前都需要先确定类型,在大多数的情况下还会使用到切片的特性。因此在实际的编程中需要多注意数组、切片的特性,避免出错。
推荐
PHP 语言中的函数是如此强大、丰富、便利,PHP 程序员转到 Go 语言来,发现很多方法都需要自己封装,很不适应。因此给大家推荐一个很好网站,可以直接通过 PHP 语言中的函数找到对应在 Go 语言中的函数,这简直是转 Go 语言 PHP 程序员的福音,网站地址:https://www.php2golang.com/
欢迎关注、分享、点赞、收藏、在看,我是码农先森。