美文网首页
第八篇:面向过程编程-完整工程举例

第八篇:面向过程编程-完整工程举例

作者: 意一ineyee | 来源:发表于2018-03-28 14:46 被阅读14次

    假设我们现在要写一个简单的加减法的项目,通过这个简单的例子来了解下一个Go项目的项目结构该是怎样的。如下:

    1、项目结构
    11
    2、main包

    main.go

    // main
    package main
    
    import (
        "fmt"
        "simpleMath"
    )
    
    func main() {
        r, err := simpleMath.Add(-1, 2)
        if err != nil {
    
            fmt.Println(err)
        } else {
    
            fmt.Println(r)
        }
    
        fmt.Println(simpleMath.Sub(1, 2))
    }
    
    3、simpleMath包
    • add.go
    // add
    package simpleMath // 包名最好和文件夹名一样,这样好理解
    
    import (
        "errors"
    )
    
    func Add(v1, v2 int) (r int, err error) { // 此处函数名的大小写表明了该函数的可见性,大写代表对外可见,小写代表包内私有
    
        if v1 < 0 || v2 < 0 { // 我们假设这个加法仅支持非负加法
    
            r = 0
            err := errors.New("对不起,仅支持非负加法")
    
            return r, err
        }
    
        return v1 + v2, nil
    }
    
    • add_test.go
    // add_test
    package simpleMath
    
    import (
        "fmt"
        "testing"
    )
    
    /*
        1、单元测试文件命名必须是 源文件_test.go
        2、单元测试文件必须导入testing包
        3、测试函数名必须以 Test 开头,并且有固定的格式:
        func TestXXX(t *testing.T) {
    
        }
        4、cmd+t,来单元测试
    */
    
    func TestAdd(t *testing.T) {
    
        r, err := Add(-1, 2)
        if err != nil {
    
            fmt.Println(err)
        } else {
    
            fmt.Println(r)
        }
    }
    
    • sub.go
    // sub
    package simpleMath
    
    func Sub(v1, v2 int) (r int) {
    
        return v1 - v2
    }
    
    • sub_test.go
    // sub_test
    package simpleMath
    
    import (
        "fmt"
        "testing"
    )
    
    func TestSub(t *testing.T) {
    
        fmt.Println(Sub(1, 2))
    }
    

    4、main输出

    对不起,仅支持非负加法
    -1
    成功: 进程退出代码 0.
    

    相关文章

      网友评论

          本文标题:第八篇:面向过程编程-完整工程举例

          本文链接:https://www.haomeiwen.com/subject/hmwgqftx.html