首页 > TAG信息列表 > Go36
Go36-46-访问网络服务(socket)
访问网络服务 这篇开始讲网络编程。不过网络编程的内容过于庞大,这里主要讲socket。而socket可以讲的东西也太多了,因此,这里只围绕Go语言介绍一些它的基础知识。 IPC方法 所谓socket,是一种IPC(Inter-Process Communication)方法,可以被翻译为进程间通信。顾名思义,IPC这个概念(或者说规Go36-44,45-文件操作(os.File)
os包 通过os包,可以拥有操控计算机操作系统的能力。这个代码包提供的都是平台不相关的API。无论是Linux、macOS、Windows、FreeBSD、OpenBSD、Plan9,os包都可以提供统一的使用接口。这样就可以用同样的方法来操纵不同的操作系统,并得到相似的结果。 os包中的API主要可以帮助我们使用Go36-42,43-bufio包
bufio包 这是另一个与I/O操作强相关的代码包。bufio是“buffered I/O”的缩写,这个代码包中的程序实体实现的I/O操作都内置了缓冲区。 主要数据类型 bufio包中的数据类型主要有: Reader Scanner Writer和ReadWriter 与io包中的数据类型类似,这些类型的值也都需要在初始化的时候,包Go36-40,41-io包中的接口和工具
字符操作和字节操作类型的接口 首先,了解一下strings.Builder、strings.Reader和bytes.Buffer这三个数据类型中实现的接口。 strings.Builder类型 strings.Builder类型主要用于构建字符串,它的指针类型实现的接口有: io.Writer io.ByteWriter fmt.Stringer io.stringWriter,io包的包Go36-36,37-字符串
unicode与字符编码 字符编码的问题,是计算机领域中非常基础的一个问题。 Unicode编码 Go语言中的标识符可以包含任何Unicode编码可以表示的字母字符。可以直接把一个整数数值转换为一个string类型的值。被转换的整数值应该是一个有效的Unicode码点,否则会显示为一个“�”字符: packagGo36-34,35-并发安全字典(sync.Map)
并发安全字典(sync.Map) 之前的几篇,几乎已经把Go语言自带的同步工具都讲过了。这篇要讲的是一个并发安全的高级数据结构:sync.Map。 原生字典 Go语言自带的字典类型map,就是原生字典,并不是并发安全的。 在使用原生字典的时候,应该在启动goroutine之前就完成字典的初始化和赋值。或者更Go36-33-临时对象池(sync.Pool)
临时对象池(sync.Pool) sync.Pool是Go语言标准库中的一个同步工具。 介绍 sync.Pool类型可以被称为临时对象池,它的值可以被用来存储临时的对象。它属于结构体类型,在它的值被真正使用之后,就应该再被复制了。 临时对象,就是不需要持久使用的某一类值。这类值对于程序来说可有可无,但如Go36-32-context.Context
context.Context sync.WaitGroup类型是一个实现一对多goroutine协作流程的同步工具。还有另一种工具也可以实现这种协作流程。 回顾sync.WaitGroup实现协作流程 在使用WaitGroup的时候,建议是用“先统一Add,再并发Done,最后Wait”的模式来构建协作流程。要避免并发的调用Add方法。这就Go36-29,30-原子操作
原子操作 对于一个Go程序来说,GO语言运行时系统中的调度器会恰当的安排其中所有的goroutine的运行。不过,在同一时刻,只会有少数的goroutine真正处于运行状态。为了公平起见,调度器会频繁的切换这些goroutine。这个中断的时机有很多,任何两个语句执行的间隙,甚至是在某条语句执行的过程中Go36-26-互斥锁与读写锁
从同步讲起 相比于Go语言宣扬的“用通讯的方式共享数据”,通过共享数据的方式来传递信息和协调线程运行的做法其实更加主流。本篇就是讨论一些与多线程、共享资源以及同步有关的知识。 sync包,就是一个与并发编程关系紧密的代码包。这里“sync”的中文意思就是“同步”。 重要的并Go36-23,24,25-单元测试
单元测试 对于程序或软件的测试分很多种,比如:单元测试、API测试、集成测试、灰度测试等。这里主要针对单元测试进行讲解。 Go 语言是一门很重视程序测试的语言,它不但自带了testing包,还有专门用于程序测试的命令go test。要想真正用好一个工具,就需要了解它的核心逻辑。 测试源码文Go36-18-for和switch
if语句、for语句和switch语句都属于Go语言的基本流程控制语句。 下面主要讨论for语句和switch语句,不过不讲语法规则,而是一些要注意的细节,就是“坑”。 带range子句的for语句 下面会分别讲解迭代变量和range表达式的问题。 迭代变量 对于不同种类的range表达式结果值,for语句的迭代变量Go36-16,17-goroutine
go语句及其执行规则 学习之前先看一下下面这句话: Don’t communicate by sharing memory; share memory by communicating. 不要通过共享数据来通讯,要以通讯的方式共享数据。 通道(也就是 channel)类型的值可以被用来以通讯的方式共享数据。更具体地说,它一般被用来在不同的goroutine之