闭包go

什么是闭包

闭包(closure)指有权访问另一个函数作用域中变量的函数。 JavaScript 高级程序设计 简单理解就是 ,一个作用域可以访问另外一个函数内部的局部变量。 ①: ②: ③: ......
闭包

go

1、深拷贝(Deep Copy) 拷贝的是数据本身,创造一个样的新对象,新创建的对象与原对象不共享内存,新创建的对象在内存中开辟一个新的内存地址,新对象值修改时不会影响原对象值。既然内存地址不同,释放内存地址时,可分别释放。 值类型的数据,默认全部都是深复制,Array、Int、String、Str ......
go

GO实现Redis:GO实现内存数据库(3)

实现Redis的database层(核心层:处理命令并返回) https://github.com/csgopher/go-redis datastruct/dict/dict.go type Consumer func(key string, val interface{}) bool type ......
内存 数据库 数据 Redis

json go

package mainimport ( "encoding/json" "fmt")type b struct { Params []interface{} `json:"params,omitempty"`}func main() { v := []interface{}(nil) v = ap ......
json go

闭包

1、闭包究竟是什么? ①、闭包是一种函数,它是一个可以访问其他函数内部变量的函数,闭包一般以函数作为返回值; ②、闭包的特点: 。函数嵌套函数; 。内部函数可以访问外部函数的变量; 。参数和变量不会被回收; ③、看一个经典的闭包例子结合理解 一句话总结:闭包就是一个可以访问其他函数内部变量的函数。 ......
闭包

【入门】Go语言切片详解

一、Go语言切片介绍 1.1 什么是切片? 切片(slice)是对数组的一个连续片段的引用,所以切片是一个引用类型,这个片段可以是整个数组,也可以是由起始和终止索引标识的一些项的子集,需要注意的是,终止索引标识的项不包括在切片内。 1.2 数组和切片的区别是什么? 切片和数组密不可分,如果将数组理解 ......
语言

【go】go多种uuid生产方式

package main import ( "fmt" "github.com/chilts/sid" "github.com/kjk/betterguid" "github.com/oklog/ulid" "github.com/rs/xid" "github.com/satori/go.uuid ......
多种 方式 uuid

【go】uuid简介

通用唯一识别码(英语:universally unique identifier,简称uuid)是一种软件建构的标准,亦为自由软件基金会组织在分散式计算环境领域的一部份。uuid的目的,是让分散式系统中的所有元素,都能有唯一的辨识信息,而不需要通过中央控制端来做辨识信息的指定。如此一来,每个人都可以 ......
简介 uuid

【go】snowflake和snoyflake雪花算法学习与go实现

预备知识: Monotonic Clocks,即单调时间,所谓单调,就是只会不停的往前增长,不受校时操作的影响,这个时间是自进程启动以来的秒数 参考文章:https://www.simpleapples.com/2018/10/26/understand-time-struct-in-go/ 雪花算 ......
算法 雪花 snowflake snoyflake

[Go]string、int、int64相互转换

import "strconv" //先导入strconv包 // string到int int, err := strconv.Atoi(string) // string到int64 int64, err := strconv.ParseInt(string, 10, 64) // int到st ......
int string Go 64

开心档之Go 错误处理

Go 语言通过内置的错误接口提供了非常简单的错误处理机制。 error类型是一个接口类型,这是它的定义: type error interface { Error() string } 我们可以在编码中通过实现 error 接口类型来生成错误信息。 函数通常在最后的返回值中返回错误信息。使用erro ......
错误

开心档之Go 语言数据类型

在 Go 编程语言中,数据类型用于声明函数和变量。 数据类型的出现是为了把数据分成所需内存大小不同的数据,编程的时候需要用大数据的时候才需要申请大内存,就可以充分利用内存。 Go 语言按类别有以下几种数据类型: 序号类型和描述 1 布尔型 布尔型的值只可以是常量 true 或者 false。一个简单 ......
语言 类型 数据

开心档之Go 语言条件语句

条件语句需要开发者通过指定一个或多个条件,并通过测试条件是否为 true 来决定是否执行指定语句,并在条件为 false 的情况在执行另外的语句。 下图展示了程序语言中条件语句的结构: Go 语言提供了以下几种条件判断语句: 语句描述 if 语句 if 语句 由一个布尔表达式后紧跟一个或多个语句组成 ......
语句 条件 语言

开心档之Go 语言环境安装

Go 语言支持以下系统: Linux FreeBSD Mac OS X(也称为 Darwin) Windows 安装包下载地址为:https://golang.org/dl/。 如果打不开可以使用这个地址:https://golang.google.cn/dl/。 各个系统对应的包名: 操作系统包名 ......
语言 环境

GO实现Redis:GO实现Redis协议解析器(2)

本文实现Redis的协议层,协议层负责解析指令,然后将指令交给核心database执行 echo database用来测试协议层的代码 https://github.com/csgopher/go-redis RESP协议 RESP是客户端与服务端通信的协议,格式有五种:正常回复:以“+”开头,以“ ......
Redis

使用go语言实现并发网络爬虫

go语言做爬虫也是很少尝试,首先我的思路是看一下爬虫的串行实现,然后通过两个并发实现:一个使用锁,另一个使用通道 这里不涉及从页面中提取URL的逻辑(请查看Go框架colly的内容)。网络抓取只是作为一个例子来考察Go的并发性。 我们想从我们的起始页中提取所有的URL,将这些URL保存到一个列表中, ......
爬虫 语言 网络

GO实现Redis:GO实现TCP服务器(1)

本文实现一个Echo TCP Server interface/tcp/Handler.go type Handler interface { Handle(ctx context.Context, conn net.Conn) Close() error } Handler:业务逻辑的处理接口 H ......
服务器 Redis TCP

Go语言并发编程(2):channel 通道介绍和使用

一、简介 channel 不仅可以用于 goroutine 间进行安全通信,还可以用于同步内存访问。 而且 Go 社区强烈推荐使用 channel 通道实现 goroutine 之间的通信, 不要通过共享内存来通信,而应该通过通信来共享内存。 Go 从语言层面保证了同一时间只有一个 goroutin ......
通道 channel 语言

Go语言并发编程(4):sync包介绍和使用(下)-Once,Pool,Cond

sync包下:Once,Pool,Cond 一、sync.Once 执行一次 Once 简介 sync.Once 是 Go 提供的让函数只执行一次的一种实现。 如果 once.Do(f) 被调用多次,只有第一次调用会调用 f。 常用场景: 用于单例模式,比如初始化数据库配置 Once 提供的方法: ......
语言 sync Once Cond Pool

Go语言并发编程(3):sync包介绍和使用(上)-Mutex,RWMutex,WaitGroup,sync.Map

一、sync 包简介 在并发编程中,为了解决竞争条件问题,Go 语言提供了 sync 标准包,它提供了基本的同步原语,例如互斥锁、读写锁等。 sync 包使用建议: 除了 Once 和 WaitGroup 类型之外,大多数类型旨在供低级库程序使用。更高级别的同步最好用 channel 通道和通信来完 ......
sync WaitGroup RWMutex 语言 Mutex

go各框架的log日志

1.kratosLog: type Logger interface { Log(level Level, keyvals ...interface{}) error } type logger struct { logger Logger prefix []interface{} hasValue ......
框架 日志 log

Go语言学习——gin的使用1

gin作为Go语言中非常受欢迎的一个web后端框架有着十分好的性能表现和易用性。下面记录一下学习使用gin完成一个最简单的服务器程序: package main //声明所属的包 import "github.com/gin-gonic/gin" //导入gin框架的包 func sayHello( ......
语言学习 语言 gin

Go语言 是如何调用 chatGpt openai api 接口的 ?

Go语言 是如何调用 chatGpt openai api 接口的 ? 学习与分享 Go语言圈 2023-03-23 08:30 发表于广东 收录于合集#学Go语言哪些事儿161个 用编码工具,建议用最新版Goland,因为这里有正式版激活账号 https://web.52shizhan.cn/ac ......
接口 chatGpt 语言 openai api

Go语言:利用 TDD 逐步为一个字典应用创建完整的 CRUD API

前言 在数组这一章节中,我们学会了如何按顺序存储值。现在,我们再来看看如何通过键存储值,并快速查找它们。 Maps 允许你以类似于字典的方式存储值。你可以将键视为单词,将值视为定义。 所以,难道还有比构建我们自己的字典更好的学习 map 的方式吗? 正文 首先编写测试 在 dictionary_te ......
字典 语言 CRUD TDD API

go 标准包flag的基本用法

相关用法见代码 flag.Type() # 通过 flag.Type() 返回对应类型的指针,姐应用后使用该值 package main import ( "flag" "fmt" "time" ) func main() { // 通过 flag.Type() 返回对应类型的指针,姐应用后使用该值 ......
标准 flag go

Go web 一种常用的脚手架模板

Go web 使用Gin框架一个比较通用的脚手架模板。 代码地址:https://github.com/KpiHang/Go-Web-Learn-2/tree/master/web_app CLD分层 分层设计模式,如MVC为了能够对GUI类型的应用进行方便扩展,将程序划分为: 控制器(Contro ......
脚手架 模板 常用 web Go

Go HTTP编程

Go 语言标准库内建提供了 net/http 包,涵盖了 HTTP 客户端和服务端的具体实现,使得我们可以很方便地编写 HTTP 客户端或服务端的程序。 HTTP 服务端 示例: package main import ( "fmt" "net/http" ) //服务端编写的业务逻辑处理程序 —— ......
HTTP Go

go sort.Sort排序

package main import ( "fmt" "sort" ) type IntSlice []int func main() { int1 := IntSlice{3, 4, 1, 2, 9, 0, 8, 2, 6} sort.Sort(int1) fmt.Println(int1) } ......
Sort sort go

version "go1.16.4" does not match go tool version "go1.20.2"

1、访问golang中国官网,下载适用于Linux的Go1.20.2安装包。 2、打开终端并导航到下载的安装包所在的目录。 3、解压缩安装包,例如:tar -C /usr/local -xzf go1.20.2.linux-amd64.tar.gz。 4、将Go二进制文件的路径添加到PATH环境变量 ......
quot version go1 go match

go 网络编程

1.网络编程基本介绍 Golang的主要设计目标之一就是面向大规模后端服务程序,网络通信这块是服务端程序必不可少也是至关重要的一部分 网络编程有两种: 1)TCP socket编程,是网络编程的主流。底层是基于TCP/IP协议的,例如QQ等客户端。 2)b/s结构(Browser/Server,浏览 ......
网络编程 网络 go