近几年Golang越来越火了,很多之前写PHP的也开始投入到Golang的怀抱中,今天小编给大家推荐一个挺好用的适合php转go的开发人员使用的函数库php2go。这个库封装了常用的开发函数,整体还是比较好的,但是里面有一些函数小编认为是多此一举。下面我们一起来看看吧。
go module 引入
go get github.com/syyongx/php2go
举例说明
array_column
// 源码: 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
相关文章
本站已关闭游客评论,请登录或者注册后再评论吧~