• 递归函数


    递归函数(和Python的递归函数没什么区别,就是自己调用自己)

    package main
    
    import "fmt"
    //递归 阶乘
    func Factorial(n uint64)(result uint64) {
    	if (n > 0) {
    		result = n * Factorial(n-1)
    		return result
    	}
    	return 1
    }
    
    //斐波那契数列
    func fibonacci(n int) int {
    	if n < 2 {
    		return n
    	}
    	return fibonacci(n-2) + fibonacci(n-1)
    }
    
    func main() {
    	var i int = 15
    	fmt.Printf("%d 的阶乘是 %d
    ", i, Factorial(uint64(i)))
    
    	var n int
    	for n = 0; n < 10; n++ {
    		fmt.Printf("%d	", fibonacci(n))
    	}
    }
    

      变量类型转换

    package main
    
    import "fmt"
    
    func main() {
    	var sum int = 17
    	var count int = 5
    	var mean float32
    	//类型转换,和Python一样直接使用其他类型加(原类型)就可以了
    	mean = float32(sum)/float32(count)
    	fmt.Printf("mean 的值为: %f
    ",mean)
    }
    

      错误处理

    //错误处理,Go 语言通过内置的错误接口提供了非常简单的错误处理机制
    //error类型是一个接口类型,这是它的定义
    /*
    type error interface {
    Error() string
    }
    */
    package main
    
    import (
    	"errors"
    	"fmt"
    )
    
    func Sqrt(f float64) (float64, error) {
    	if f < 0 {
    		return 0, errors.New("math: square root of negative number")
    	}
    	// 实现
    	return f*f,nil
    }
    
    func main(){
    	result,err:= Sqrt(-1)
    
    	if err != nil {
    		fmt.Println(err)
    	}else{
    		fmt.Println(result)
    	}
    }
    

      

    package main
    
    import (
    	"fmt"
    )
    
    // 定义一个 DivideError 结构
    type DivideError struct {
    	dividee int
    	divider int
    }
    
    // 实现 `error` 接口
    func (de *DivideError) Error() string {
    	strFormat := `
        Cannot proceed, the divider is zero.
        dividee: %d
        divider: 0
    `
    	return fmt.Sprintf(strFormat, de.dividee)
    }
    
    // 定义 `int` 类型除法运算的函数
    func Divide(varDividee int, varDivider int) (result int, errorMsg string) {
    	if varDivider == 0 {
    		dData := DivideError{
    			dividee: varDividee,
    			divider: varDivider,
    		}
    		errorMsg = dData.Error()
    		return
    	} else {
    		return varDividee / varDivider, ""
    	}
    
    }
    
    func main() {
    
    	// 正常情况
    	if result, errorMsg := Divide(100, 10); errorMsg == "" {
    		fmt.Println("100/10 = ", result)
    	}
    	// 当被除数为零的时候会返回错误信息
    	if _, errorMsg := Divide(100, 0); errorMsg != "" {
    		fmt.Println("errorMsg is: ", errorMsg)
    	}
    
    }
    

      

  • 相关阅读:
    canvas实现涂鸦板
    走进javascript——被忽视的DOM方法和属性
    走进javascript——DOM事件
    HTML5本地储存sessionStorage的销毁数据问题
    给微软的依赖注入框架写一些扩展方法
    一个支持 CodeFirst/DbFirst/ModelFirst 的数据库小工具
    用 C# 写一个 Redis 数据同步小工具
    SqlServer 利用游标批量更新数据
    WeihanLi.Npoi 根据模板导出Excel
    angular 构建可以动态挂载的配置服务
  • 原文地址:https://www.cnblogs.com/perfey/p/9905986.html
Copyright © 2020-2023  润新知