Skip to content

Different behavior between lo.Mode / it.Mode #709

@d-enk

Description

@d-enk

v1.52.0

package main

import (
	"fmt"
	"slices"

	"github.com/samber/lo"
	"github.com/samber/lo/it"
)

func main() {
	arr := []int{1, 1, 2, 2, 3, 3, 3}

	mode := lo.Mode(arr)
	fmt.Println(cap(mode), mode)

	mode = it.Mode(slices.Values(arr))
	fmt.Println(cap(mode), mode)
}
1 [3]
4 [3]
mode = append(mode[:0], item)

is better (no new allocations) than

mode = []T{item}

but need something like

return mode[:len(mode):len(mode)]

or

return append(T{},mode[:len(mode)]) // discard tail

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions