golang 查找数组中最小数的泛型函数
发布时间:2020-12-16 18:42:36 所属栏目:大数据 来源:网络整理
导读:golang里要实现查找数组最小数的泛型函数,需要用到类型开关。 gol的类型开关写法: switchv.(type){caseint:casefloat64:casestring:} 思路就是遍历数组,遇到更小的数保存下来,函数退出返回那个数。 golang代码: packagemainimport("fmt")funcMinimum(fi
golang里要实现查找数组最小数的泛型函数,需要用到类型开关。 gol的类型开关写法: switchv.(type){ caseint: casefloat64: casestring: } 思路就是遍历数组,遇到更小的数保存下来,函数退出返回那个数。 golang代码: packagemain import( "fmt" ) funcMinimum(firstinterface{},rest...interface{})interface{}{ minimum:=first for_,v:=rangerest{ switchv.(type){ caseint: ifv:=v.(int);v<minimum.(int){ minimum=v } casefloat64: ifv:=v.(float64);v<minimum.(float64){ minimum=v } casestring: ifv:=v.(string);v<minimum.(string){ minimum=v } } } returnminimum } funcmain(){ i:=Minimum(1,3,5,7,9,10,-1,1).(int) fmt.Printf("i=%dn",i) } clang: #include<stdio.h> intmin_int(void*v1,void*v2){ return*(int*)v1>*(int*)v2; } intmin_double(void*v1,void*v2){ return*(double*)v1>*(double*)v2; } void*minimum(void*base,intsize,intesize,int(*min_cmp)(void*,void*)){ inti; void*mini=base; for(i=1;i<size;i++){ if(min_cmp(mini,base+i*esize)) mini=base+i*esize; } returnmini; } #defineARR_LEN(arr)sizeof(arr)/sizeof((arr)[0]) #defineARR_ESIZE(arr)sizeof((arr)[0]) intmain(){ void*min; intarr_int[]={0,6,8,2}; min=minimum(arr_int,ARR_LEN(arr_int),ARR_ESIZE(arr_int),min_int); printf("%dn",*(int*)min); doublearr_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("%lfn",*(double*)min); return0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |