Go语言:网络自动化的新选择
1. Go工具与网络应用
Go二进制文件会附带一些流行的工具,这为开发者提供了适用于大多数常见场景的默认选择,减少了工具生态系统中的创造性空间,但也避免了在不同Go项目间切换时重新安装和学习新工具的麻烦。
在网络方面,Go具有强大的能力。一些网络自动化过程可能需要同时与成百上千个网络设备建立连接,而Go能够大规模地协调这些操作。
Go自带强大的网络包,提供创建网络连接的所有构造、对流行格式数据进行编码和解码的包,以及处理字节的原语。
2. 并发特性
Go通过Go运行时管理的轻量级线程(goroutine)提供了一流的并发支持。这一语言特性使得在顺序程序中嵌入异步函数成为可能。在函数调用前加上 go
关键字,该函数将在一个单独的goroutine中运行,不会阻塞调用程序的执行。
以下是一个模拟与远程网络设备交互的程序示例:
func main() {
devices := []string{"leaf01", "leaf02", "spine01"}
resultCh := make(chan string, len(devices))
go connect(devices, resultCh)
fmt.Println("Continuing execution")
for msg := range resultCh {
fmt.Println(msg)
}
}
连接远程设备通常会花费