magicarray

package module
v0.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 21, 2023 License: MIT Imports: 9 Imported by: 0

README

magicarray

NO care type, no care struct, easy to sort and aggregation.similar with php array structure,easy to deal for data process. Coding shortly,process automatically. in magicarray, no nil forever.

go get github.com/lingdor/magicarray
package main

import (
	"fmt"
	arr "github.com/lingdor/magicarray"
)

type struct1 struct {
	Field1 string
	Field2 int
	Field3 bool
}

func main() {

	rows, _ := arr.Valueof([]struct1{
		{Field1: "row1", Field2: 1, Field3: true},
		{Field1: "row2", Field2: 2, Field3: true},
		{Field1: "row3", Field2: 3, Field3: true},
	})

	fmt.Println("column:")
	iter := arr.Column(rows, "Field2").Iter()
	for val := iter.FirstVal(); val != nil; val = iter.NextVal() {
		fmt.Println(val.MustInt())
	}
	fmt.Println("")

	fmt.Println("dto translate:")

	entity, _ := arr.Valueof(struct1{Field1: "row1", Field2: 1, Field3: true})

	userInfo := map[string]any{
		"userid":   1,
		"username": "tom",
		"age":      88,
	}

	mixDto, _ := arr.Merge(entity, userInfo)

	if bs, err := arr.ToJson(mixDto); err == nil {
		fmt.Println(string(bs))
	} else {
		panic(err)
	}
}

output: column: 1 2 3

dto translate: {"Field1":"row1","Field2":1,"Field3":true,"age":88,"userid":1,"username":"tom"}

Documentation

Index

Constants

View Source
const NamingDefault = NamingJsonFirst

NamingDefault use the order of Json,hump

View Source
const NamingGormFormat = 6
View Source
const NamingHump = 1

NamingHump Naming for the hump rule format,example: helloWord

View Source
const NamingJsonFirst = 51

NamingJson use the order of json,hump format

View Source
const NamingJsonFormat = 5
View Source
const NamingOrmFirst = 62

NamingOrm use order of gorm or underline split rule for naming

View Source
const NamingRaw = 3

NamingRaw Naming for raw value of rule

View Source
const NamingUnderLine = 2

NamingUnderLine Naming for the underline split words rule format, example: hello_world

Variables

View Source
var OptNamingJsonFirst = func(arr api.MagicArray, conf *initConfig) {
	conf.NamingFormatter = GenerateNamingFormatter(NamingJsonFirst)
}
View Source
var OptOrmFirst = func(arr api.MagicArray, conf *initConfig) {
	conf.NamingFormatter = GenerateNamingFormatter(NamingOrmFirst)
}

Functions

func Equals

func Equals(from MagicArray, to any) error

func GenerateNamingFormatter

func GenerateNamingFormatter(code int) func(string) string

func Len

func Len(arr MagicArray) int

func ToIntList

func ToIntList(array MagicArray) []int

func ToJson

func ToJson(arr MagicArray) ([]byte, error)

func ToMap

func ToMap(array MagicArray) map[string]any

func ToStringList

func ToStringList(array MagicArray) []string

Types

type MagicArray

type MagicArray api.MagicArray

func Append

func Append(arr MagicArray, val any) MagicArray

func Column

func Column(from MagicArray, key interface{}) MagicArray

func Keys

func Keys(arr MagicArray) MagicArray

func Make

func Make(cap int) MagicArray

func ValueOfSlice

func ValueOfSlice[T any](val []T) MagicArray

func Valueof

func Valueof(list any, opts ...Opt) (MagicArray, error)

ValueOf no thread sfae

func ValueofStruct

func ValueofStruct(val any) MagicArray

func ValueofStructs

func ValueofStructs(list any) (MagicArray, error)

func Values

func Values(arr MagicArray) MagicArray

type Opt

type Opt func(conf *initConfig)

type WriteMagicArray

type WriteMagicArray api.WriteMagicArray

func Merge

func Merge(arr MagicArray, args ...any) (WriteMagicArray, error)

func Remove

func Remove(arr MagicArray, keys ...any) WriteMagicArray

func ToWriter

func ToWriter(arr MagicArray) WriteMagicArray

type ZVal

type ZVal api.ZVal

func Get

func Get(arr MagicArray, key interface{}) ZVal

func Max

func Max(arr MagicArray) ZVal

func Min

func Min(arr MagicArray) ZVal

func Sum

func Sum(arr MagicArray) ZVal

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL