Go语言的优势有哪些

Python015

Go语言的优势有哪些,第1张

1. 部署简单

Go

编译生成的是一个静态可执行文件,除了glibc外没有其他外部依赖。这让部署变得异常方便:目标机器上只需要一个基础的系统和必要的管理、监控工具,完全不需要操心应用所需的各种包、库的依赖关系,大大减轻了维护的负担。

2. 并发性好

Goroutine和channel使得编写高并发的服务端软件变得相当容易,很多情况下完全不需要考虑锁机制以及由此带来的各种问题。单个Go应用也能有效的利用多个CPU核,并行执行的性能好。

3. 良好的语言设计

从学术的角度讲Go语言其实非常平庸,不支持许多高级的语言特性但从工程的角度讲,Go的设计是非常优秀的:规范足够简单灵活,有其他语言基础的程序员都能迅速上手。更重要的是

Go 自带完善的工具链,大大提高了团队协作的一致性。

4. 执行性能好

虽然不如 C 和 Java,但相比于其他编程语言,其执行性能还是很好的,适合编写一些瓶颈业务,内存占用也非常省。

delve 是go语言的调试器,delve的目标是为go提供一个简洁、功能齐全的debug工具,delve易于调用和使用。

为了能够编译delve,需要安装Go 1.10或更高版本

安装好go后,直接go get即可安装,更多安装教程见: https://github.com/go-delve/delve/tree/master/Documentation/installation

go get github.com/go-delve/delve/cmd/dlv

安装好后,在终端执行dlv或者dlv help 会看到dlv的帮助信息,则说明安装成功

dlv常用命令

delve的目标是成为一个简洁而强大的工具。但如果你不习惯在编译语言中使用源码调试,则可能令人困惑。本文档将提供开始调试go程序所需的全部信息。

调试例子程序如下

├── go.mod

├── go.sum

├── main.go

├── test

└── utils

├── util.go

└── util_test.go

调试程序主要有三个文件,main.go、util.go、util_test.go,内容如下,比较简单,go包管理工具使用的是go module,模块名为test

在vscode debug 的设置中配置launch.json文件

mode 设置为debug时,program的内容${fileDirname}即可,mode 设置为exec时,program的值为二进制文件的路径,通过设置mode的值,即可调试源码和二进制程序(也需要有源码)。mode模式为auto时,测试了下,vscode 并不能通过program的内容来判断是debug还是exec

远程调试时,需要在远程也有源码、二进制包和dlv工具

在远端执行dlv命令

dlv debug --headless --listen=:8989 --api-version=2 --accept-multiclient #用degbug方式启动远程应用程序

dlv exec --headless --listen=:8989 ./test --api-version=2 --accept-multiclient # exec执行当前目录下的test二进制文件

--listen:指定调试端口

--api-version:指定api版本,默认是1

--accept-multiclient:接受多个client调试

在vscode中线下好源码,和远端的源码结构一致。launch.json配置如下:

在vscode中打好断点后,就可以进行远程调试了