美文网首页
Go语言编程(一)介绍

Go语言编程(一)介绍

作者: jeepshen | 来源:发表于2017-01-06 21:21 被阅读0次

    语言特性

    Go语言作为一门静态类型语言,有很多新的特性
    1. 自动垃圾回收
    2. 更丰富的内置类型,增加了字典map ,数组切片slice
    3. 函数多返回值
    4. 错误处理: defer panic recover
    5. 匿名函数和闭包
    6. 并发编程
    7. 反射
    8. 语言交互性
    

    虽然不太了解这些特性,但是之后应该会逐步深入,此处先记下。

    第一个程序

    package main
    
    import "fmt"
    
    func main() {
        fmt.Printf("hello, world\n")
    }
    

    环境:debian 8.6 + vscode,安装golang apt isntall golang

    程序注意的地方:
    - package 声明: 表示该代码所属的包,go 语言中最基本的分发单位
    - import 导入改程序所依赖的所有包
    - main : 主函数既不能有参数,也不能有返回值

    编译环境

    `go version`
    
    `go version go1.3.3 linux/amd64`
    
    `go build hello.go`
    
    `go run hello.go`
    

    工程管理

    开发一个计算器的工程项目:
    
    
    - src: 源码文件夹
    - pkg: 包被安装到这里
    - bin: 生成的二进制文件
    

    源码

    1. calc.go
    
    //Package main
    package main
    
    import "os"
    import "fmt"
    
    import "./simplemath"
    import "strconv"
    
    //Usage 匿名函数?
    var Usage = func() {
        fmt.Println("USAGE: calc command [arguments] ...")
        fmt.Println("\nThe command are:\n\tadd\tAddition of two values.\n\tsqrt\tSquare")
    }
    
    func main() {
        args := os.Args
        if args == nil || len(args) < 2 {
            Usage()
            return
        }
    
        switch args[1] {
        case "add":
            if len(args) != 4 {
                fmt.Println("Usage: calc add <integer1> <integer2>")
                return
            }
            v1, err1 := strconv.Atoi(args[2])
            v2, err2 := strconv.Atoi(args[3])
            if err1 != nil || err2 != nil {
                fmt.Println("Usage: calc add <integer1> <integer2>")
                return
            }
            ret := simplemath.Add(v1, v2)
            fmt.Println("Result: ", ret)
        default:
            //Usage()
        }
    }
    
    
    2. /simplemath/add.go
    
    //Package simplemath...
    
    package simplemath
    
    // Add a and b
    func Add(a int, b int) int {
        return a + b
    }
    
    
    3. /simplemath/add_test.go
    
    //Package simplemath
    package simplemath
    
    import "testing"
    
    func TestAdd(t *testing.T) {
        r := Add(1, 2)
        if r != 3 {
            t.Errorf("Add(1,2) failed. Got %d, expecrted 3.\r", r)
        }
    }
    
    4. 生成,运行。注:生成的二进制文件,不依赖开发环境,一次编译到处运行?
    

    问题追踪和调试

    go使用尽量简单的语法,和尽量完善的库。如果出现了问题,需要调试,主要两种跟踪方法:打印日志和GDB逐步调试。
    
    1. 打印日志
      fmt.Printf 和 fmt.Println
    2. GDB 调试

    相关文章

      网友评论

          本文标题:Go语言编程(一)介绍

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