深入理解Golang channel的应用

目录前言整体结构创建发送接收关闭前言channel是用于 goroutine 之间的同步、通信的数据结构channel 的底层是通过 mutex 来控制并发的,但它为程序员提供了更高一层次的抽象,...

Golang 编写Tcp服务器的解决方案

目录Echo 服务器拆包与粘包问题优雅关闭Golang 开发 Tcp 服务器及拆包粘包、优雅关闭的解决方案Golang 作为广泛用于服务端和云计算领域的编程语言,tcp socket 是其中至关重...

Golang基于sync.Once实现单例的操作代码

目录基于sync.Once实现单例单例类型定义Driver类Field connonce.Do(func() {})并发访问once.Do()对外暴露方法Conn()重新new(Driver)会发生什么?在go里实现单例模式有多种方...

一文浅析Golang中的切片(Slice)

1.切片的定义从上一节我们知道,因为数组的长度是固定的并且数组长度属于类型的一部分,数组a中已经有三个元素了,我们不能再继续往数组a中添加新元素了。那在js中我们往数组里面...

详解Win系统下怎么搭建Golang开发环境

1、Go语言简介Go语言(又称Golang),起源于2007年,并在2009年由Google正式对外发布。Go语言是一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言,它的主要目标是“...

Go语言中的for循环有多坑?

中禁止重新定义语言,所以 rsc 不能直接这么干。因此将会由用户自己决定控制这个 “破坏”,方式将会是根据每个包的 go.mod 文件中的 go 行更改语义。如果我们是在 G...

详解go高并发时append出错问题!

背景在实现图片转码的需求时,需要支持最大 500 个图片下载后转换格式;如果是一个一个下载后转码,耗时太长,需要使用 goroutine 实现 500 个图片并发下载后,并发转码;但自测过程中...

详解Go语言中指针的11个知识点

指针是写出优秀代码最重要的部分之一。在这篇文章中,我们将探索指针是什么,以及如何在 Go 中使用它们。 1. 什么是指针指针是存储其指向地址的变量(强调一下,只是存储数值的变量...

Go语言中的字符串拼接方法详情

目录1、string类型2、strings包2.1 strings.Builder类型2.2 strings.Reader类型3、bytes.Buffer3.1 bytes.Buffer:写数据3.2 bytes.Buffer:读数据4、字符串拼接4.1 直接相加4....

Go官方工具链用法详解

Go官方工具链为了从任意目录运行Go官方工具链中工具命令(通过go命令), Go官方工具链安装目录下的bin子目录路径必须配置在PATH环境变量中。 当使用安装程序安装Go官方工具链时,...

Go语言并发编程 sync.Once

sync.Once用于保证某个动作只被执行一次,可用于单例模式中,比如初始化配置。我们知道init()函数也只会执行一次,不过它是在main()函数之前执行,如果想要在代码执行过程中只运行...

Go select 死锁的一个细节

目录下面对是一个 select 死锁的问题package mainimport "sync"func main() { var wg sync.WaitGroup foo := make(chan int) bar := make(chan int) wg.Add(1) go func() {...

Go语言之结构体与方法

目录一、结构体1、结构体的定义与使用2、定义并赋初值3、匿名结构体(只使用一次,没有名字)4、结构体的零值5、结构体的指针6、匿名字段(字段没有名字,只有类型)7、嵌套结构体(结构...

Golang 利用反射对结构体优雅排序的操作方法

最近开始实习,工作技术栈主要Python和Golang,目前的任务把Python模块重构为GO模块,然后出现了一个问题,就是要将一个结构体按结构体中各个字段进行排序,然后写入Redis,对于Pyhon...

GO 函数式选项模式(Functional Options Pattern)

Golang 开发者遇到的许多问题之一是尝试将一个函数的参数设置为可选. 这是一个非常常见的用例, 有些对象应该使用一些基本的默认设置来开箱即用, 并且你偶尔可能需要提供一...

Golang标准库和外部库的性能比较

目录1、路由2、JSON 序列化和反序列化3、是否使用ORM框架4、总结前言:我已经在生产中使用 Go 一段时间了,因为它的构建规模较小,并且由 goroutines 提供的并发性能以及直接在机...

Golang通脉之方法详情

目录方法和接收者指针类型的接收者
值类型的接收者
方法和函数任意类型添加方法方法继承方法重写结构体和方法补充方法和接收者
Go语言中的方法(Method)是一种作用于特定类型...

Go语言中的逃逸分析究竟是什么?

目录1、逃逸分析介绍2、Go中内存分配在哪里?3、Go与C++内存分配的区别4、逃逸分析骚操作5、逃逸分析引申示例说明1、逃逸分析介绍学计算机的同学都知道,在编译原理中,分析指针...

golang实现一个简单的websocket聊天室功能

基本原理:
1.引入了 golang.org/x/net/websocket 包。
2.监听端口。
3.客户端连接时,发送结构体: {"type":"login","uid":"我是用户名","msg":"登陆成功"}' .服务端根据login信...

Go语言并发编程之互斥锁Mutex和读写锁RWMutex

目录一、互斥锁Mutex1、Mutex介绍2、Mutex使用实例二、读写锁RWMutex1、RWMutex介绍2、RWMutex使用实例在并发编程中,多个Goroutine访问同一块内存资源时可能会出现竞态条件,...

golang中接口对象的转型两种方式

接口对象的转型有两种方式:1. 方式一:instance,ok:=接口对象.(实际类型)  如果该接口对象是对应的实际类型,那么instance就是转型之后对象,ok的值为true
  配合if...else if...

Go语言之fo循环与条件判断

目录一、for循环1、基本使用2、省略第一部分3、省略第一和三部分(这是一个 while 循环) for 条件 { 循环体内容 }4、死循环5、开多协程演示6、break二、Switch语句1、基本使用...

关于Go 是传值还是传引用?

目录1、Go 官方的定义2、传值和传引用2.1 传值
2.2 传引用3、争议最大的 map 和 slice3.1 map
3.2 slice3、总结关于Go 是传值还是传引用?很多人都讨论起来
下面我们就带着问...

浅谈golang 的高效编码细节

目录struct 和 map 用谁呢?字符串如何拼接是好?用 + 的方式使用 fmt.Sprintf() 的方式使用 strings.Join 的方式使用 buffer 的方式xdm,我们都知道 golang 是天生的高并发,高效...

Go 语言 JSON 标准库的使用

目录序列化1. 结构体序列化2. 字典序列化3. 切片序列化反序列化1. 明确知道 JSON 格式2. 无法确定 JSON 格式Go 语言中的 encoding/json 库提供了复杂的将 Go 中各种类型与J...

返回顶部
顶部