了解下 Go 编译、调试、错误等基础部分


分类: Golang
评论: 0

了解下 Go 编译、调试、错误等基础部分



分类: Golang
评论: 0

文件结构

文件开头是包名,这个 go 的最基本的分发单位。

要生成可执行文件必须要有一个名为 main 的包,同时包含 main 函数,这是 go 可执行程序的起点,main 函数没有入参,也没有返回值。

在声明包之后,是 import 导入包部分。

通过 import 来引入其他包进行使用,从而构成依赖关系。

一些语法规则:

package main

import "fmt"

func main() {
	fmt.Println("Hello World!")
}

编译命令

go build file.go
go run file.go

调试

编写单元测试

编写单元测试需要引入 testing 包。

基本用法:

func TestXXX(t *testing.T) {
    // 测试逻辑
}

单元测试的名称规范是在以目标文件原名,在其加上 _test 后缀,就是默认的测试文件。

如 add.go,测试文件就是 add_test.go。

例如:

package simplemath
import "testing"
func TestAdd(t *testing.T) {
    r := Add(1, 2)
    if r != 3 {
        t.Errorf("Add(1, 2) failed. Got %d, expected 3.", r)
    }
}

变量打印

使用 fmt 包的函数,将变量值打印到控制台。

fval := 110.48 
ival := 200 
sval := "This is a string. " 
fmt.Println("The value of fval is", fval) 
fmt.Printf("fval=%f, ival=%d, sval=%s\n", fval, ival, sval) 
fmt.Printf("fval=%v, ival=%v, sval=%v\n", fval, ival, sval)

输出日志

在生产环境下就没有办法使用控制台打印日志了,只能将日志输出到文件。

通过 log 包,可以将日志输出到文件。

IDE 调试

若是使用 IDE 工具开发,例如 Goland,会有专门的端点调试工具集成的,使用这些集成开发环境,会让工作变得更轻松,高效率。

GoLand 官方博客也有一篇介绍教程:https://blog.jetbrains.com/go/2019/02/06/debugging-with-goland-getting-started/。

GDB 调试

日常开发使用 GoLand 自带的代码调试功能就够了,如果你想要通过更加 Hacker 的方式调试代码,可以选择 GDB。

Darwin 内核拒绝解决办法:

对应的解决方法参考这里:https://opensource.apple.com/source/lldb/lldb-69/docs/code-signing.txt(中文对应的解决方式)。