前言 在 Golang 中 map 不是并发安全的,自 1.9 才引入了 sync.Map ,sync.Map 的引入确实解决了 map 的并发安全问题,不过 sync.Map 却没有实现 len() 函数,如果想要计算 sync.Ma...
使用教程 第63页
go语言区块链实战实现简单的区块与区块链
区块链实战 字节 字段 说明 4 版本 区块版本号,表示本区块遵守的验证规则 32 父区块头哈希值...
go语言区块链学习调用以太坊
geth 以太坊智能合约开发中最常用的命令行工具。 Geth是由以太坊基金会提供的官方客户端软件,用Go编程语言编写的。Geth提供了一个交互式命令控制台,通过命令控制台中包含了以太坊的各种功能(API)。全名go-ethereum。...
go语言区块链学习调用智能合约
1. 获取abi文件 合约的接口 在remix工具中编译合约后,会有一个abi,复制 然后新建一个xx.abi文件,把赋值的粘贴到里面 注意:代码变了,重新编译后abi也会变,所以一定要用最新的abi 也可以通过s...
详解go语言中并发安全和锁问题
首先可以先看看这篇文章,对锁有些了解 GO语言并发编程之互斥锁、读写锁详解 Mutex-互斥锁 Mutex 的实现主要借助了 CAS 指令 + 自旋 + 信号量 数据结构: type Mutex struct { stat...
Go语言中log日志库的介绍
一、标准库log介绍 Go语言内置的log包实现了简单的日志服务。 1、使用Logger log包定义了Logger类型,该类型提供了一些格式化输出的方法。 log包也提供了一个预定义的“标准”logger,可以通...
Go来合并两个csv的实现示例
背景 通常我们处理文件都是用python+pandas,确实很香。但是今天突然有人找我用go写一个合并两个csv文件的,需要将两个csv按id进行合并,大致如下图 思路很简单,先读入两个csv文件,然后遍历比较id,如果相同就...
Go 中实现超时控制的方案
前言 日常开发中我们大概率会遇到超时控制的场景,比如一个批量耗时任务、网络请求等;一个良好的超时控制可以有效的避免一些问题(比如 goroutine 泄露、资源不释放等)。 Timer 在 go 中实现超时控制的方法非常简单,首...
GO的range具体使用
GO 语言的 for…range 能做什么呢? for…range 如何使用 ? for…range 的返回值有哪些情况,可以对于任何数据结构使用吗? for…range 的返回值如果不需要,...
Go 中闭包的底层原理
1. 什么是闭包? 一个函数内引用了外部的局部变量,这种现象,就称之为闭包。 例如下面的这段代码中,adder 函数返回了一个匿名函数,而该匿名函数中引用了 adder 函数中的局部变量 sum ,那这个函数就是一个闭包。 pac...
为什么GO不支持循环引用
学习 Go 语言的开发者越来越多了,很多小伙伴在使用时,就会遇到种种不理解的问题。 其中一点就是包的循环引用的报错: package command-line-arguments imports github.com/eddyc...
golang redigo发布订阅使用的方法
redigo 对 发布订阅的使用 redigo 对redis 的发布订阅机制放在pubsub.go 中 订阅主题后 通过Receive() 函数接受发布订阅主题的消息 // Receive returns a pushed mess...
定位并修复 Go 中的内存泄露问题
Go 是一门带 GC 的语言,因此,大家很容易认为它不会有内存泄露问题。 大部分时候确实不会,但如果有些时候使用不注意,也会导致泄露。 本文案例来自谷歌云的代码,探讨如何找到并修复 Go 中的内存泄露。(确切来说是因为资源泄露导致的内存泄...
Go语言并发编程 互斥锁详情
1、互斥锁Mutex 1.1 Mutex介绍 Go 语言的同步工具主要由 sync 包提供,互斥锁 (Mutex) 与读写锁 (RWMutex) 就是sync 包中的方法。 互斥锁可以用来保护一个临界区,保证同一时刻只有一个 go...
浅谈golang 的高效编码细节
xdm,我们都知道 golang 是天生的高并发,高效的编译型语言 可我们也都可知道,工具再好,用法不对,全都白费,我们来举 2 个常用路径来感受一下 struct 和 map 用谁呢? 计算量很小的时候,可能看不出使用 临时 st...
Golang开发命令行之flag包的使用方法
1、命令行工具概述 日常命令行操作,相对应的众多命令行工具是提高生产力的必备工具,鼠标能够让用户更容易上手,降低用户学习成本。 而对于开发者,键盘操作模式能显著提升生产力,还有在一些专业工具中, 大量使用快捷键代替繁琐的鼠标操作,能...
Golang标准库和外部库的性能比较
前言: 我已经在生产中使用 Go 一段时间了,因为它的构建规模较小,并且由 goroutines 提供的并发性能以及直接在机器上运行构建的能力,所以我非常喜欢它的快速和可靠。 由于标准包的速度非常快,您可以在不使用任何第三方库或框架的情...
go语言编程学习实现图的广度与深度优先搜索
图的实现 所谓图就是节点及其连接关系的集合。所以可以通过一个一维数组表示节点,外加一个二维数组表示节点之间的关系。 //图的矩阵实现 typedef struct MGRAPH{ nodes int[]; //节点...
Go 语言 JSON 标准库的使用
Go 语言中的 encoding/json 库提供了复杂的将 Go 中各种类型与JSON格式之间转换的功能, 我们主要使用以下几个功能: 将一个切片、结构体或字典序列化成 JSON 格式的字符串【字节流】。 将一个 JSON 格...
Golang通脉之方法详情
方法和接收者 Go语言中的方法(Method)是一种作用于特定类型变量的函数。这种特定类型变量叫做接收者(Receiver)。接收者的概念就类似于其他语言中的this或者 self。 Go 语言中同时有函数和方法。一个方法就是一个包含...
Golang通脉之数据类型详情
1、标识符与关键字 在了解数据类型之前,先了解一下go的标识符和关键字 1.1 标识符 在编程语言中标识符就是定义的具有某种意义的词,比如变量名、常量名、函数名等等。 Go语言中标识符允许由字母数字和_(下划线)组成,并且只能以字母和...
Golang通脉之map详情
Go语言中提供的映射关系容器为map,其内部使用散列表(hash)实现。 map 是一种无序的键值对的集合。map 最重要的一点是通过 key 来快速检索数据,key 类似于索引,指向数据的值 map 是一种集合,所以可以像迭代数组和切片...
Golang中channel的原理解读(推荐)
数据结构 channel的数据结构在$GOROOT/src/runtime/chan.go文件下: type hchan struct { qcount uint // 当前队列中剩余元素个数...
Golang通脉之类型定义
1、自定义类型 在Go语言中有一些基本的数据类型,如 string 、 整型 、 浮点型 、 布尔 等数据类型, Go语言中可以使用 type 关键字来定义自定义类型。 type是Go语法里的重要而且常用的关键字,type绝不只是对应于...

遥辰科技专注于苹果cms模板网站