2.3 UDP 服务器和客户端开发 UDP 协议是非面向连接 UDP 其实是一种不可靠的协议,它在发送的时候不管客户端是否存在,也不管数据是否真的发送给了客户端。在工作中常见的 UDP 协议一般都是 DNS 在使用 在 UDP 种服务端开发和客户端开发都和 TCP 一样的。三个最主要的因素都是地址和协议还有链接 在 UDP 开发种没有监听 // 开…
2.2 tcp 服务器并发处理客户端请求范例 并发: 时间服务器 当 client 链接,就给客户端响应,服务器端就给客户端返回一个当前时间 2.2.1 未作并发处理范例 server 端 package main import ( "fmt" "net" "time" ) func main() { addr := "0.0.0.0:99…
2 服务器端与客户端开发范例 在网络上传输不能传输文本,一般传输字节切片 当我们在进行服务器端和客户端开发的时候需要注意,服务器端和客户端不能同时读取或者说同时写入数据,这样会造成死锁状态 由此我们需要约定到底是 server 端先读取或者说先写入,还是由 client 端先读取或者先写入,这个过程是可以约定的 所以当我们在做客户端与服务器端开发的…
1 net 包 在 go 中提供过了 net 包,net 包提供了对网络的支持。 net 包提供了对 socket 编程的支持,socket 编程分服务端和客户端编程,针对服务端可使用函数 Listen 创建监听服务,对于客户端可使用函数 Dial 连接服务器 1.1 net 包常用函数 常用函数 Listen: 用于创建监听服务器 ListenP…
并发编程1 goroutine 1.1 goroutine 的调度模型1.1.1 MPG 模式基本介绍1.1.2 MPG 模式运行的状态 11.13 MPG 模式运行的状态 21.2 goroutine 基本介绍1.2.1 进程和线程的说明:1.2.2 并发和并行1.2.3 Go 协程和 Go 主线程1.3 goroutine 快速入门1.3.1 …
接口与反射1 接口的使用1.1 定义1.2 声明1.2.1 结构体指针接收者实现接口1.2.2 结构体值接收者实现接口1.3 赋值1.3.1 短声明赋值案例1.3.2 注意接口只是一个方法行为的抽象1.3.3 接口类型之间的变量赋值1.4 接口继承1.5 类型断言1.5.1 类型断言后访问数据1.5.2 类型断言注意事项1.5.3 通过类型断言调用…
文件与 IO 操作1 文件读取&文件的写入1.1 文件的打开1.2 不带缓冲对文件的读取1.2.1 一次性读取全部内容1.3 创建文件和不带缓存写入内容操作1.3.4 通过命令行输入到文件中1.3.5 在程序中格式化输入内容到文件2 OpenFile 和 文件位置操作2.1 如果文件不存在就创建,并追加内容2.2 文件只读操作2.3 文件只…
4 自定义类型&结构体定义 结构体默认是值类型 结构体是自定义类型的一种,在学结构体之前我们需要了解一下自定义类型 面向对象三大思想: 封装:在 go 里面实现封装就是用的结构体,将一堆属性不同的数据放到一起 继承: 多态: 4.1 自定义类型 在 GO 里面是支持自定义类型的,语法如下: type TypeName struct //…
1 error 接口 Go 语言通过 error 接口实现错误处理的标准模式,通过使用函数返回值列表中的最后一个值返回错误信息,将错误的处理交由程序员主动进行处理 在程序中运行时错误错误一般分为两种: 可恢复的错误(重试/或忽略) 不可恢复的错误(程序退出) 范例代码: package main import ( "fmt" "strconv"…
函数类型+匿名函数+闭包 函数也可以赋值给变量,存储在数组、切片、映射中,也可作为参数传递给函数或作为函数返回值进行返回 通过函数类型,我们也可以定义一些集合类型,比如切片的映射的 函数类型的意义: 函数类型可以把函数作为参数传递到其他的函数中 1 函数类型 函数类型:由参数的数量和他的类型,还有返回值的数量和类型组成 package main …