func (name string) imp() string{ print("这是实现方法的写法") } func sum(x int,y int) int{ print("这是正常写法") }
给接口增加参数:
package main import ( "fmt" ) type Man interface { name() string; age() int; } type Woman struct { } func (woman Woman) name() string { return "Jin Yawei" } func (woman Woman) age() int { return 23; } type Men struct { } func ( men Men) name() string { return "liweibin"; } func ( men Men) age() int { return 27; } func main(){ var man Man; man = new(Woman); fmt.Println( man.name()); fmt.Println( man.age()); man = new(Men); fmt.Println( man.name()); fmt.Println( man.age()); }
求平方根
原理: 计算机通常使用循环来计算 x 的平方根。从某个猜测的值 z 开始,我们可以根据 z² 与 x 的近似度来调整 z,产生一个更好的猜测:
z -= (z*z - x) / (2*z)
重复调整的过程,猜测的结果会越来越精确,得到的答案也会尽可能接近实际的平方根。
package main import "fmt" func sqrt(x float64,i float64) (float64,float64){ remain:=(i*i-x)/(2*i); i=i-remain if(remain>0){ return sqrt(x,i); }else{ return i,remain } } func get_sqrt(x float64) float64{ i,_ :=sqrt(x,x); return i; } func main(){ fmt.Println(get_sqrt(2)) fmt.Println(get_sqrt(3)) }
更好的一种 fibonacci 实现,用到多返回值特性,降低复杂度:
func fibonacci2(n int) (int,int) { if n < 2 { return 0,n } a,b := fibonacci2(n-1) return b,a+b } func fibonacci(n int) int { a,b := fibonacci2(n) return b }
斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*)。
在这里的:
return fibonacci(n-2) + fibonacci(n-1)
是指的 n-2 是 n 前面第二项的值,而不是 n-2=x 的值,那么 n-1 也与此同理。
感谢您的支持,我会继续努力的!
支付宝扫一扫,即可进行扫码打赏哦
2170Go 语言接口
2169Go 语言接口
给接口增加参数:
2168Go 语言递归函数
求平方根
原理: 计算机通常使用循环来计算 x 的平方根。从某个猜测的值 z 开始,我们可以根据 z² 与 x 的近似度来调整 z,产生一个更好的猜测:
重复调整的过程,猜测的结果会越来越精确,得到的答案也会尽可能接近实际的平方根。
2167Go 语言递归函数
更好的一种 fibonacci 实现,用到多返回值特性,降低复杂度:
2166Go 语言递归函数
斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*)。
在这里的:
是指的 n-2 是 n 前面第二项的值,而不是 n-2=x 的值,那么 n-1 也与此同理。