Go实现max函数练习

package main

import (
    "fmt"
)

func main() {
    ia := []int{1, 2, 3, 8, 3}
    fa := []float32{1.0, 1231.12, 33.3, 3.0}
    mi := max(intSlice(ia))
    mf := max(floatSlice(fa))
    fmt.Println(mi, mf)
}

func max(data mySlice) (m interface{}) {
    n := 0
    l := data.len()
    for i := 1; i < l; i++ {
        if data.less(n, i) {
            n = i
        }
    }

    m = data.get(n)
    return m
}

type mySlice interface {
    len() int
    less(i, j int) bool
    get(i int) interface{}
}

type intSlice []int

func (p intSlice) len() int              { return len(p) }
func (p intSlice) less(i, j int) bool    { return p[i] < p[j] }
func (p intSlice) get(i int) interface{} { return p[i] }
func (p intSlice) max() interface{}      { return max(p) }

type floatSlice []float32

func (p floatSlice) len() int              { return len(p) }
func (p floatSlice) less(i, j int) bool    { return p[i] < p[j] }
func (p floatSlice) get(i int) interface{} { return p[i] }
func (p floatSlice) max() interface{}      { return max(p) }

只要实现mySlice里的几个interface就可以支持其它数据类型了。改下大小写什么的,可以做独立的包。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值