Go语言的简单介绍:
Go语言是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。相比 C/C++,Go语言在保持效率的同时,更加简洁、高效,非常适合构建简单、可靠且高效的软件。
GO升级版本或切换:
go get golang.org/dl/go<version>
go<version> download
其中< version >替换为你想要更新或切换的版本,如
go get golang.org/dl/go1.20
go1.20 download
同时你的使用可以通过go1.20 mod init等形式去手动调用1.20版本的go去运行对应的代码。
语法结构:
Go语言采用包的方式进行模块化管理,每个Go文件都属于一个包。在Go语言中,主要的代码组织单位是包而不是文件。其中最基础的hello world代码如下所示:
package main
import "fmt"
func main() {
fmt.Println("Hello World!")
}
在Go语言中,使用var关键字声明变量,且变量声明后必须使用,样例如下所示:
var name string
name = "i love python"
也可以使用:=语法声明并初始化变量:
name := "John"
数组与切片:
var a [3]int //数组
var s []int //切片
一些较为常见的内容,例如结构体,指针等等其它语言都学过的东西暂且不表,在此先提出go的并发编程,Go语言在语言级别原生支持并发,使用goroutine可以方便地写出高效的并发程序:
func hello() {
fmt.Println("Hello goroutine!")
}
func main() {
go hello()
}
Goroutines 是在 Golang 中执行并发任务的方式。它们仅存在于 Go 运行时的虚拟空间中而不存在于 OS 中,因此需要 Go 调度器来管理它们的生命周期。它们并不是线程,Goroutine由Go语言运行时(runtime)管理,而线程由操作系统内核管理,同时使用空间也远远小于线程。
channel通信:
Go语言中的channel是用于不同goroutine之间进行信息传递和同步的管道,一个goroutine可以通过向channel发送或接收数据与其他goroutine进行高效地通信,从而避免了共享内存所带来的复杂的同步问题,使得并发程序更简洁、安全和易于构建
SOCKET5:
Golang利用net/socks5包提供的Dial,Listen等基础模块,根据Socket5协议的规范,可以很容易地编写出一个功能完整的Socket5代理服务,在处理客户端的连接请求时需要按协议进行握手校验,解析出目标地址后创建代理链接;然后使用io.Copy在客户端和目标服务器间进行数据流的双向转发,在此过程中还需要注意添加验证,加密,支持UDP等额外功能,并防范可能的安全风险;Golang实现的Socket5代理可以高效可靠地运行,可以应用于VPN访问或内网反向代理等场景,充分发挥了Golang在网络服务端编程上的优势。
golang是一种对于在校生来说较新的语言,具有很大的潜力。