30.Golang之错误和异常处理

[TOC]前言Go语言没有类似 Java 或 .NET 中的异常处理机制,虽然可以使用 defer、panic、recover 模拟,但官方并不主张这样做,Go语言的设计者认为其他语言的异常机制已被过度使用,上层逻辑需要为函数发生的异常付出太多的资源,同时,如果函数使用者觉得错误处理很麻烦而忽略错误,那么程序将在不可预知的时刻崩溃。Go语言希望开发者将错误处理视为正常开发必须实现的环节,正确...

GO 2022-07-25 PM 732次 0条

29.Golang写入文件

[TOC]前言一、写入文件操作1.1 os.OpenFile()函数语法func OpenFile(name string, flag int, perm uint32) (file *File, err Error)参数name:要文件路径+文件名;flag:打开文件的模式,只读、读写等;perm:文件权限,一个八进制数。r(读)04,W(写)02,x(执行)01。os.OpenFile(...

GO 2022-07-24 PM 2283次 0条

28.Golang读取文件

[TOC]前言一、概念文件是数据源(保存数据的地方)的一种,文件最主要的作用就是保存数据。文件在程序中是以流的形式来操作的。输入流和输出流流:数据在数据源(文件)和程序(内存)之间经历的路径输入流:数据从数据源(文件)到程序(内存)的路径输出流:数据从程序(内存)到数据源(文件)的路径二、读取文件操作2.1 打开和关闭文件打开文件func Open(filename string) (fil...

GO 2022-07-24 PM 899次 0条

27.Golang之反射三定律

[TOC]前言一、概述一个接口变量,实际上都是由一 pair 对(type 和 data)组合而成,pair 对中记录着实际变量的值和类型。也就是说在真实世界(反射前环境)里,type 和 value 是合并在一起组成接口变量的。而在反射的世界(反射后的环境)里,type 和 data 却是分开的,他们分别由 reflect.Type 和 reflect.Value 来表现。二、反射第一定律...

GO 2022-07-22 AM 621次 0条

26.Golang之反射介绍

[TOC]前言反射(reflection)是在 Java 出现后迅速流行起来的一种概念,通过反射可以获取丰富的类型信息,并可以利用这些类型信息做非常灵活的工作。一、概述反射:是指在程序运行期对程序本身进行访问和修改的能力。程序在编译时,变量被转换为内存地址,变量名不会被编译器写入到可执行部分。在运行程序时,程序无法获取自身的信息。支持反射的语言可以在程序编译期将变量的反射信息,如字段名称、类...

GO 2022-07-22 AM 573次 0条

25.Golang并发安全和锁

[TOC]前言一、概述有时候在Go代码中可能会存在多个goroutine同时操作一个资源(临界区),这种情况会发生竞态问题(数据竞态)。这就好比现实生活中十字路口被各个方向的汽车竞争,还有火车上的卫生间被车厢里的人竞争。数据竞争的示例import ( "fmt" "sync" ) var ( x int64 sw s...

GO 2022-07-15 PM 873次 0条

24.Golang之select

[TOC]前言一、概述select 是 Golang 中的一个控制结构,语法上类似于switch 语句,只不过select是用于 goroutine 间通信的 ,每个 case 必须是一个通信操作,要么是发送要么是接收,select 会随机执行一个可运行的 case。如果没有 case 可运行,goroutine 将阻塞,直到有 case 可运行。二、基本语法语法//select基本用法 s...

GO 2022-07-14 PM 661次 0条

23.Golang之Channel示例

[TOC]前言示例一需求:定义两个方法,一个方法向通道里面写数据,一个向通道里面读取数据。要求同步进行说明1、开启一个 fn1 的协程向通道 inChan 中写入 100 条数据 2、开启一个 fn2 的协程读取 inChan 中写入的数据 3、注意:fn1 和 fn2 同时操作一个通道 4、主线程必须等待操作完成后才可以退出代码import ( "fmt" ...

GO 2022-07-14 PM 599次 0条

22.Golang之Channel

[TOC]前言一、概述​ 通道(Channel)是 Golang 在语言级别上提供的 goroutine 间的通讯方式,可以使用channel在多个 goroutine 之间传递消息。如果说 goroutine 是 Go 程序并发的执行体,channel 就是它们之间的连接。channel 是可以让一个 goroutine 发送特定值到另一个 goroutine 的通信机制。​...

GO 2022-07-13 PM 614次 0条

21.Golang协程介绍

[TOC]前言一、概述协程(Goroutines) 是与其他函数或方法同时运行的函数或方法。 Goroutines可以被认为是轻量级线程。与线程相比,创建 Goroutine 的成本很小。因此,Go 应用程序通常会同时运行数千个 Goroutine。协程的优势:与线程相比,Goroutines 非常小。它们的堆栈大小只有几 kb,堆栈可以根据应用程序的需要增长和缩小,而在线程的情况下,堆栈大...

GO 2022-07-12 PM 756次 0条