学习打卡1

59 阅读3分钟

1.GO语言的入门: 初学GO语言,对于GO语言的初印象:库完善,语法感觉类似java,方便程度不及python但性能高于它。 包声明:使用 package 关键字声明一个新的包。例如:

go package main

import ( "fmt" )

func main() { fmt.Println("Hello, World!") } 导入包:使用 import 关键字导入需要引用的包,可以使用相对路径或绝对路径指定包路径。例如:

go import ( "fmt" "../mypackage" ) 函数定义:使用 func 声明一个新的函数。

go func add(x int, y int) int { return x + y } 变量定义:使用 var 关键字声明变量,并可初始化。

go var name string = "Alice" var age int = 20 常量定义:使用 const 声明常量,不可更改其值。

go const Pi float32 = 3.1415926 流程控制:Go 语言中有条件语句(如 if-else)、循环语句(如 for)、跳转语句(如 break 和 continue)等,用于实现流程控制。

go if score >= 60 { fmt.Println("及格了") } else { fmt.Println("不及格") }

for i := 0; i < 5; i++ { fmt.Println(i) }

switch grade { case "A": fmt.Println("优秀") case "B": fmt.Println("良好") default: fmt.Println("其他") } 2.GO语言协程:协程是由 Go 运行时环境(GOROOT)进行调度和管理的,并且可以在一个操作系统线程上切换执行 是一种轻量级线程,由 Go 运行时调度。与操作系统线程相比,协程在创建、销毁和切换等方面都具有更低的开销和更高的并发能力,使得 Go 语言可以以较小的成本实现高并发的网络服务等应用。 当主 goroutine 结束时,所有的子 goroutine 都会被关闭,因此必须确保所有需要执行的 goroutine 在程序退出前都执行完成。

在协程并发处理中,常见的模型是生产者消费者模型,即使用多个协程同时处理任务。生产者向一个队列或通道写入数据,消费者从其中取出数据并进行处理,可以使用 channel 实现协程间的通信和同步。 Go 中的协程可以使用 go 关键字创建,其语法类似于函数调用。 package main

import ( "fmt" "time" )

func printHello() { for i := 0; i < 5; i++ { fmt.Println("Hello") time.Sleep(1 * time.Second) } }

func printWorld() { for i := 0; i < 5; i++ { fmt.Println("world") time.Sleep(2 * time.Second) } }

func main() { // 创建一个协程执行 printHello 函数 go printHello()

printWorld()

} 3.socks5代理 SOCKS5代理协议:SOCKS5协议是一款广泛使用的代理协议,它在使用 TCP/IP 协议通讯的前端机器和服务器机器之间扮演一个中介角色,使得内部网中的前端机器变得能够访问 Internet 网中的服务器,或者使通讯更加安全。

SOCKS5 服务器通过将前端发来的请求转发给真正的目标服务器, 模拟了一个前端的行为。在这里,前端和SOCKS5之间也是通过TCP/IP协议进行通讯,前端将原本要发送给真正服务器的请求发送给 SOCKS5 服务器,然后 SOCKS5 服务器将请求转发给真正的服务器。它允许客户端通过 SOCKS5 代理服务器与远程服务器进行连接。在该协议下,客户端可以选择使用任何网络层协议(如 TCP 或 UDP),并且可以随时更改其公共 IP 地址,从而实现匿名浏览和访问限制的服务等。