golang 数组组合成最小的整数_golang 查找数组中最小数的泛型函数

golang里要实现查找数组最小数的泛型函数,需要用到类型开关。

gol的类型开关写法:

switch v.(type) {

case int:

case float64:

case string:

}

思路就是遍历数组,遇到更小的数保存下来,函数退出返回那个数。

golang代码:

package main

import (

"fmt"

)

func Minimum(first interface{}, rest ...interface{}) interface{}{

minimum := first

for _, v := range rest {

switch v.(type) {

case int:

if v := v.(int); v 

minimum = v

}

case float64:

if v := v.(float64); v 

minimum = v

}

case string:

if v := v.(string); v 

minimum = v

}

}

}

return minimum

}

func main() {

i := Minimum(1, 3, 5, 7, 9, 10, -1, 1).(int)

fmt.Printf("i = %d\n", i)

}

clang:

#include 

int min_int(void *v1, void *v2) {

return *(int *)v1 > *(int *)v2;

}

int min_double(void *v1, void *v2) {

return *(double *)v1 > *(double *)v2;

}

void *minimum(void *base, int size, int esize, int (*min_cmp)(void *, void *)) {

int i;

void *mini = base;

for (i = 1; i 

if (min_cmp(mini, base + i * esize))

mini = base + i * esize;

}

return mini;

}

#define ARR_LEN(arr) sizeof(arr) / sizeof((arr)[0])

#define ARR_ESIZE(arr) sizeof((arr)[0])

int main() {

void *min;

int arr_int[] = {0, 5, 6, 7, 8, 9, -1, 2};

min = minimum(arr_int, ARR_LEN(arr_int), ARR_ESIZE(arr_int), min_int);

printf("%d\n", *(int *)min);

double arr_double[] = {1.1, 2.2, 3.3, 4.4, 5.5, 6.6, -3.14, 99};

min = minimum(arr_double, ARR_LEN(arr_double), ARR_ESIZE(arr_double), min_double);

printf("%lf\n", *(double *)min);

return 0;

}

有疑问加站长微信联系(非本文作者)

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值