分类 golang 中的文章

Go总结(十)| unsafe包高级编程

Go语言中的unsafe包非常简单,但是威力强大,用不少就出问题。整个包就这些代码: 1 2 3 4 5 6 7 package unsafe type ArbitraryType int type Pointer *ArbitraryType func Sizeof(x ArbitraryType) uintptr func ………

阅读全文

Go总结(九)| goroutine+channel并发编程

goroutine 在Go里,每一个并发执行的活动成为goroutine。 当一个程序启动时, 只有一个goroutine来调用main函数,称它为主goroutine。新的goroutine通过go语句进行创建。语法上,一个go语句是在普通的函数或者方法调用前加上go关键字前缀。main函数返回时,main函数中其他所有 ………

阅读全文

Go总结(八)| 运行时调度器模型GMP

Go语言最大的特色就是其并发编程模型,多处理器的时候还可以自动实现真正的并行计算。这些复杂的调度算法被打包在了Go语言运行时当中。 分时调度 先回顾一下操作系统。 操作系统本身就是对硬件资源的一个大调度器;如果没有多任务的需求,我们都不需要这么复杂的调度,不需要分时操作系统;一直算个不停,一条路走到黑反而是利用率最高的;事实上最早期的操作 ………

阅读全文

Go总结(七)| 格式化输出字符串

格式化参数非常多,这里列出一些常用的: verb 描述 %b,%o,%d,%x 二进制、八进制、十进制、十六进制整数 %X 十六进制整数、字母大写 %f,%g,%e 浮点数:如3.141593,3.141592653589793,3.141593e+00 %v 按值的本来值输出 %+v 在 %v 基础上,对结构体字段名和值进行展开 %#v ………

阅读全文

Go安装 | Golang环境配置

Linux上安装golang 上https://golang.google.cn/dl/下载对应的包,整体放入/usr/local下面,然后解压缩,删除压缩包,添加环境变量,应用设置使生效。下面是操作命令。 1 2 3 4 5 6 7 8 9 10 11 # 下载对应的包,放入/usr/local/并解压 wget ………

阅读全文

Go总结(六)| 正则表达式

Go语言正则表达式稍微有些复杂;下面做整理记录。 https://blog.csdn.net/chinabestchina/article/details/104764849 https://blog.csdn.net/u013870094/article/details/70142492?utm_source=blogxgwz4 (未完 ………

阅读全文

Go总结(五)| 强大的HTML模板解析

Go语言模板引擎的使用可以分为三部分:定义模板文件、解析模板文件和模板渲染。 定义模板 按照相应的语法编写模板文件。 1 2 3 4 5 6 7 8 <html> <head> <title>模板文件</title> </head> <body> hello {{ . ………

阅读全文

Go总结(四)| 类型方法(Method)

Go语言没有复杂的class概念,严格来说不是面向对象的语言,她和C语言很像,是面向函数的;Go中函数用关键字func来声明。Go没有class但是有struct、interface,可以把他们理解成类型定义;问题来了,有一种用func声明的函数可以指定struct、interface类型的接收者,这种函数在Go语言中单独叫做方法;方法的……

阅读全文

Go总结(三)| 函数传值和传指针的区别

其实Go语言函数中所有的传参传递的都是拷贝。只不过有的copy是值类型的副本,有些copy是指针类型的副本。 Go语言实战 《Go语言实战》这本书有下面这两段描述。 内置类型是由语言提供的一组类型。我们已经见过这些类型,分别是数值类型、字符串类型和布尔类型。这些类型本质上是原始的类型。因此,当对这些值进行增加或者删除的时候,会创建一个新 ………

阅读全文

Go总结(二)| 类型占用内存大小探究

数据类型的本质是内存空间,每种语言都有大量丰富的预定义类型,以方便开发。每种数据类型究竟占用多少内存空间呢?我相信很多学编程的人并不十分清楚这个问题,然而要想写出高质量的代码、设计高效的数据结构、开发优良的底层工具类项目;对内存空间的了解就很有必要了,这样才能尽可能节省内存空间,提高CPU和缓存之间的命中率,进而提高核心代码的性能。 基础 ………

阅读全文