适合PHP转Golang的函数类库

2022-10-11 21:39:22 136 0
魁首哥

近几年Golang越来越火了,很多之前写PHP的也开始投入到Golang的怀抱中,今天小编给大家推荐一个挺好用的适合php转go的开发人员使用的函数库php2go。这个库封装了常用的开发函数,整体还是比较好的,但是里面有一些函数小编认为是多此一举。下面我们一起来看看吧。

go module 引入

 go get github.com/syyongx/php2go  

举例说明

array_column

适合PHP转Golang的函数类库

 // 源码: ArrayColumn array_column()
func ArrayColumn(input map[string]map[string]interface{}, columnKey string) []interface{} {
	columns := make([]interface{}, 0, len(input))
	for _, val := range input {
		if v, ok := val[columnKey]; ok {
			columns = append(columns, v)
		}
	}
	return columns
}

// 使用
php2go.ArrayColumn()  

in_array

 // InArray in_array()
// haystack supported types: slice, array or map
func InArray(needle interface{}, haystack interface{}) bool {
	val := reflect.ValueOf(haystack)
	switch val.Kind() {
	case reflect.Slice, reflect.Array:
		for i := 0; i < val.Len(); i++ {
			if reflect.DeepEqual(needle, val.Index(i).Interface()) {
				return true
			}
		}
	case reflect.Map:
		for _, k := range val.MapKeys() {
			if reflect.DeepEqual(needle, val.MapIndex(k).Interface()) {
				return true
			}
		}
	default:
		panic("haystack: haystack type muset be slice, array or map")
	}

	return false
}  

当然有些封装小编认为没有必要,如:

implode

 // Implode implode()
func Implode(glue string, pieces []string) string {
	var buf bytes.Buffer
	l := len(pieces)
	for _, str := range pieces {
		buf.WriteString(str)
		if l--; l > 0 {
			buf.WriteString(glue)
		}
	}
	return buf.String()
}

// go原生写法 这样难道不是更加的简单?
s := []string{"foo", "bar", "baz"}
strings.Join(s, ", ")  

实现的功能

  • Date/Time functions
  • String functions
  • URL functions
  • Array(slice/map) functions
  • Math functions
  • directory/filesystem functions
  • variable handle functions
  • network functions
  • misc functions

小编建议:简单的能用原生的还是使用go原生的去实现,比较复杂的可以自己摘录放到自己的工程中使用。

收藏
分享
海报
0 条评论
136
上一篇:3分钟短文 | PHP 删除字符串最末一个字符,你用的什么方法? 下一篇:文件提交,php写入数据库并显示在前端里(适合新手)

本站已关闭游客评论,请登录或者注册后再评论吧~

忘记密码?

图形验证码