golang初学之接口实现

package main

import (
	"fmt"
)

type ErrNegativeSqrt float64// 实现Error接口,ErrNegativeSqrt 可以作为一个error来用
func (e ErrNegativeSqrt) Error() string {
	return fmt.Sprintf("cannot Sqrt negative number: %v", float64(e))
}

func Sqrt(x float64) (float64, error) {
	if x < 0 {
		return 0, ErrNegativeSqrt(x)
	}
	z := x/2
	var t float64
	for  {
		t = z
		z = z - (z*z - x)/(2*x)
		if t - z > -0.001 && t - z < 0.001 {
			break
		}
	}
	return z, nil
}

func main() {
	fmt.Println(Sqrt(2))
	fmt.Println(Sqrt(-2))
}

 

时间: 2024-07-31 00:40:16

golang初学之接口实现的相关文章

golang初学之接口---image

来自golang tour 练习 https://tour.go-zh.org/methods/16 package main import "golang.org/x/tour/pic" import "image" import "image/color" type Image struct{ x, y, width, height int } func (im Image) ColorModel() color.Model { return

golang中interface接口的深度解析

什么是interface,简单的说,interface是一组method的组合,下面这篇文章主要给大家深度解析了关于golang中的interface接口,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧. 一 接口介绍 如果说gorountine和channel是支撑起Go语言的并发模型的基石,让Go语言在如今集群化与多核化的时代成为一道亮丽的风景,那么接口是Go语言整个类型系列的基石,让Go语言在基础编程哲学的探索上达到前所

初学PHP接口的一些思考

刚学习一些PHP的进阶,初遇PHP接口问题,很是不解. 1 <?php 2 interface ICanEat(){ 3 piblic function eat(); 4 }: //定义一个接口,可以与类关联,里面定义的方法不需要内容实现 5 class Human implement ICanEat{ 6 public function eat ($food){ 7 echo " Human is eating ".$food; 8 } //类如果关联了接口就必须把里面所定义的

golang初学之goroutine---web爬虫

go tour 练习 https://tour.go-zh.org/concurrency/10 package main import ( "fmt" "sync" "time" ) type Fetcher interface { // Fetch 返回 URL 的 body 内容,并且将在这个页面上找到的 URL 放到一个 slice 中. Fetch(url string) (body string, urls []string, err

.net初学之接口初接触

1.接口  定义接口是为了统一标准,关键字interface. 定义接口时,接口名前要加大写字母I,例如 interface Ijiekou { string fangfa(); //没有方法体的方法 } 2. (1)接口内的方法没有方法体,没有修饰符,不实现. (2)接口也有传递性,不能被实例化,不能写带方法体的方法. (3)普通类继承接口必须实现其未实现的方法,接口继承接口可以不实现其方法,抽象类不能继承接口. (4)普通类可以继承多个接口. 3.接口与抽象类的异同   抽象类 接口 异 用

golang继承与接口

继承 结构体 Go语言的结构体(struct)和其他语言的类(class)有同等的地位,但Go语言放弃了包括继 承在内的大量面向对象特性,只保留了组合(composition)这个最基础的特性. 组合甚至不能算面向对象特性,因为在C语言这样的过程式编程语言中,也有结构体,也有组合.组合只是形成复合类型的基础. type Rect struct { x, y float64 width, height float64 } 简单继承 package main import ( "fmt"

golang初学之 斐波纳契闭包

package main import "fmt" // fibonacci 函数会返回一个返回 int 的函数.func fibonacci() func() int { a := 0 b := 1 return func() int { defer func() { a, b = b, a+b }() return a }} func main() { f := fibonacci() for i := 0; i < 10; i++ { fmt.Println(f()) }}

golang初学之map

package main import ( "strings" "fmt") // 返回各个单词数量统计的map func WordCount(s string) map[string]int { m := make(map[string] int) for _, word := range strings.Fields(s) { m[word] ++ } return m} func main() { fmt.Println(WordCount("I a

golang中的接口

CSDN找的一个网页,照着抄练一次. 差不多的使用场景都在了. package main import ( "fmt" ) type People interface { ReturnName() string } type Role interface { People ReturnRole() string } type Student struct { Name string } type Teacher struct { Name string } func (s Studen