zoukankan      html  css  js  c++  java
  • 86_Go基础_1_54 自定义结构体实现错误2

     1 package main
     2 
     3 import "fmt"
     4 
     5 type areaError struct {
     6     msg    string  // 错误的描述
     7     lenght float64 // 发生错误的时候,矩形的长度
     8     width  float64 // 发生错误的时候,矩形的宽度
     9 }
    10 
    11 func (e *areaError) Error() string {
    12     return e.msg
    13 }
    14 
    15 func (e *areaError) legnthNegative() bool {
    16     return e.lenght < 0
    17 }
    18 
    19 func (e *areaError) widthNegative() bool {
    20     return e.width < 0
    21 }
    22 
    23 func rectArea(length, width float64) (float64, error) {
    24     msg := ""
    25     if length < 0 {
    26         msg = "长度小于零"
    27     }
    28     if width < 0 {
    29         if msg == "" {
    30             msg = "宽度小于零"
    31         } else {
    32             msg += ",宽度也小于零"
    33         }
    34     }
    35 
    36     if msg != "" {
    37         return 0, &areaError{msg, length, width}
    38     }
    39     return length * width, nil
    40 }
    41 
    42 func main() {
    43     length, width := 6.7, -9.1
    44     area, err := rectArea(length, width)
    45     if err != nil {
    46         fmt.Println(err) // 宽度小于零
    47         if err, ok := err.(*areaError); ok {
    48             if err.legnthNegative() {
    49                 fmt.Printf("error:长度,%.2f,小于零\n", err.lenght)
    50             }
    51             if err.widthNegative() {
    52                 fmt.Printf("error:宽度,%.2f,小于零\n", err.width)
    53                 // error:宽度,-9.10,小于零
    54             }
    55         }
    56         return
    57     }
    58     fmt.Println("矩形的面积是:", area)
    59 }
  • 相关阅读:
    小D课堂
    小D课堂
    小D课堂
    小D课堂
    小D课堂
    小D课堂
    小D课堂
    阶段3 3.SpringMVC·_07.SSM整合案例_09.ssm整合之Spring整合MyBatis框架配置事务
    阶段3 3.SpringMVC·_07.SSM整合案例_08.ssm整合之Spring整合MyBatis框架
    阶段3 3.SpringMVC·_07.SSM整合案例_07.ssm整合之编写MyBatis框架测试保存的方法
  • 原文地址:https://www.cnblogs.com/luwei0915/p/15634779.html
Copyright © 2011-2022 走看看