美文网首页
golang 泛型自定义数组

golang 泛型自定义数组

作者: 吃猫的鱼0 | 来源:发表于2018-02-22 16:09 被阅读0次

代码

package slice

import (
    "fmt"
    "errors"
)

type Slice []interface{}

func NewSlice() Slice {
    return make(Slice, 0)
}

func (this* Slice) Add(elem interface{}) error {
    for _, v := range *this {
        if isEqual(v, elem) {
            fmt.Printf("Slice:Add elem: %v already exist\n", elem)
            return errors.New("ERR_ELEM_EXIST")
        }
    }
    *this = append(*this, elem)
    fmt.Printf("Slice:Add elem: %v succ\n", elem)
    return nil
}

func (this* Slice) Remove(elem interface{}) error {
    found := false
    for i, v := range *this {
        if isEqual(v, elem) {
            if i == len(*this) - 1 {
                *this = (*this)[:i]

            } else {
                *this = append((*this)[:i], (*this)[i+1:]...)
            }
            found = true
            break
        }
    }
    if !found {
        fmt.Printf("Slice:Remove elem: %v not exist\n", elem)
        return errors.New("ERR_ELEM_NT_EXIST")
    }
    fmt.Printf("Slice:Remove elem: %v succ\n", elem)
    return nil
}
func isEqual(a, b interface{}) bool {
    if comparable, ok := a.(Comparable); ok {
        return comparable.IsEqual(b)
    } else {
        return a == b
    }
}
type Comparable interface {
    IsEqual(obj interface{}) bool
}

对象demo

type Student struct {
    id string
    name string
}
func (this Student) IsEqual(obj interface{}) bool {
    if student, ok := obj.(Student); ok {
        return this.GetId() == student.GetId()
    }
    panic("unexpected type")
}

func (this Student) GetId() string {
    return this.id
}

相关文章

  • golang 泛型自定义数组

    代码 对象demo

  • 探秘 Java 中的泛型(Generic)

    本文包括:JDK5之前集合对象使用问题泛型的出现泛型应用泛型典型应用自定义泛型——泛型方法自定义泛型——泛型类泛型...

  • Web笔记-基础加强

    泛型高级应用 自定义泛型方法 自定义泛型类 泛型通配符? 泛型的上下限 泛型的定义者和泛型的使用者 泛型的定义者:...

  • Java泛型

    参考:Java知识点总结(Java泛型) 自定义泛型类 自定义泛型接口 非泛型类中定义泛型方法 继承泛型类 通配符...

  • 泛型

    泛型就是对参数类型的增强。允许一些自定义类型作为泛型的参数类型泛型可以使用在类中、构造方法、方法、接口、数组中、还...

  • 008-自定义泛型,Collections

    自定义泛型 泛型类 代码实现 测试 泛型接口 代码实现 泛型方法 代码演示 测试 泛型上下边界 Collectio...

  • JAVA范型<? extends __> <

    目录 一. 泛型概念的提出(为什么需要泛型)? 二.什么是泛型? 三.自定义泛型接口、泛型类和泛型方法 四.类型通...

  • 实战技术

    第一课 泛型 泛型注意点:在数组中,一般用可变数组添加方法,泛型才会生效,如果使用不可变数组,添加元素,泛型没有效...

  • golang 泛型

    https://draveness.me/whys-the-design-go-generics/[https:/...

  • golang - 泛型

    1. 申明一个泛型函数 [T any] 约束参数的类型,意思是该函数支持任何T类型; 多个泛型参数语法: 2. 申...

网友评论

      本文标题:golang 泛型自定义数组

      本文链接:https://www.haomeiwen.com/subject/xyrztftx.html