Go 语言 在线

2170Go 语言接口

func (name string) imp() string{
    print("这是实现方法的写法")
}

func sum(x int,y int) int{
    print("这是正常写法")
}

2169Go 语言接口

给接口增加参数:

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());
}

2168Go 语言递归函数

求平方根

原理: 计算机通常使用循环来计算 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))
}

2167Go 语言递归函数

更好的一种 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
}

2166Go 语言递归函数

斐波纳契数列以如下被以递归的方法定义: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 也与此同理。