zoukankan      html  css  js  c++  java
  • go学习笔记day20

    Go 错误处理

    已经到错误处理了,加油啊。。。。

    吐槽下这个编辑器,我用的 Edge浏览器,当往里面粘贴内容时,编辑区会滚动。。。。求改造思路和代码

    Go 语言通过内置的错误接口提供了非常简单的错误处理机制。

    我们可以在编码中通过实现 error 接口类型来生成错误信息。

    type error interface {
        Error() string
    }
    

      

    示例

    errors.New 可返回一个错误信息

    func Sqrt(f float64) (float64, error) {
        if f < 0 {
            return 0, errors.New("math: square root of negative number")
        }
        // 实现
    }

    result, err:= Sqrt(-1)
    
    if err != nil {
       fmt.Println(err)
    }

    我们在调用Sqrt的时候传递的一个负数,然后就得到了non-nil的error对象,将此对象与nil比较,结果为true,
    所以fmt.Println(fmt包在处理error时会调用Error方法)被调用,以输出错误
    
    
     

     

    实现Error接口,并自定义错误信息:

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

      

    菜鸟教程上还有 并发和语言开发工具两章没有看,加油。。。

    后面还有很长的路要走。。。。

  • 相关阅读:
    17岁韩寒在CCTV《对话》舌战群吊的视频
    在线LaTex编辑器
    PowerShell 点滴记录
    程序阅读理解题目(高中语文版,附答案)
    jQuery Validate 应用
    ASP.net MVC 向子视图传递数据
    分库分表(sharding)后主键全局唯一性的解决方案
    Ajax局部刷新例子
    限制 Flash 在指定域名/网址中播放 (Flash 防盗链)
    javascript实现二级联动下拉框
  • 原文地址:https://www.cnblogs.com/baota/p/15699457.html
Copyright © 2011-2022 走看看