Skip to content

为什么我觉得GoFrame的garray比PHP的array还好用?

前言

写过PHP的同学都知道 PHP的数组Array非常好用,特别灵活

我在写PHP之前使用Java做安卓开发,在接触PHP的数组Array之后,直呼太香了!

而在学习Go基础知识的时候了解到Go的数组和PHP的数组并不一样;从一定程度上讲,Go的slice切片类型和PHP的数组array比较像(不固定长度、引用类型、动态扩容等),但是在开发使用中远远不像PHP的array灵活。

初识GoFrame

最近在使用基于Go语言的GoFrame框架撸项目,发现GoFrame封装的garray竟然比PHP的array还要好用。

近期已经更新了一系列GoFrame的文章,下文将GoFrame简称为gf。感兴趣的同学可以关注我的专栏:Go语言学习专栏 ,目前已经更新了120多篇原创文章,获得了700多位同学的关注。

gf框架有个特点,提供的组件基本都支持设置并发安全开关。显然PHP是不支持并发安全开关的,PHP的数组是并发安全的。PHP-FPM是阻塞的单线程模型,PHP-FPM每个进程里只有一个线程,一个进程同时只能服务一个客户端。

garray特点简介

  1. garray支持int/string/interface{}三种常用的数据类型。

  2. garray支持普通数组和排序数组,普通数组的结构体名称定义为_Array格式,排序数组的结构体名称定义为Sorted_Array格式,如下:Array, intArray, StrArray,SortedArray, SortedIntArray, SortedStrArray

  3. 其中排序数组SortedArray,需要给定排序比较方法,在工具包gutil中也定义了很多ComparatorXXX的比较方法,用起来很方便。当然也支持自定义排序方式。

基本使用

go
package main import (    "fmt"    "github.com/gogf/gf/container/garray" ) func main() {    //创建并发安全的int型数组    a := garray.NewIntArray(true)    //添加数组项    for i := 0; i < 10; i++ {       a.Append(i)    }    // 打印结果:    fmt.Println(a) //"[0,1,2,3,4,5,6,7,8,9]"    fmt.Println("