Go

Go 语言为什么不支持并发读写 map?

大家好,我是 frank ,「 Golang 语言开发栈」公众号作者。 01 介绍 在 Go 语言项目开发中,我们经常会使用哈希表 map,它的时间复杂度是 O(1),Go 语言中的 map 使用开放寻址法避免哈希碰撞。 Go 语言中的 map 并非原子操作,不支持并发读写操作。 Go 官方认为 m ......
语言 map Go

Go标准库:Go template用法详解

本文只介绍template的语法和用法,关于template包的函数、方法、template的结构和原理,见:深入剖析Go template。 入门示例 以下为test.html文件的内容,里面使用了一个template语法{{.}}。 <!DOCTYPE html> <html> <head> < ......
template 标准

2024-01-13:用go语言,现在有一个打怪类型的游戏,这个游戏是这样的,你有n个技能, 每一个技能会有一个伤害, 同时若怪物小于等于一定的血量,则该技能可能造成双倍伤害, 每一个技能最多只能释放

2024-01-13:用go语言,现在有一个打怪类型的游戏,这个游戏是这样的,你有n个技能, 每一个技能会有一个伤害, 同时若怪物小于等于一定的血量,则该技能可能造成双倍伤害, 每一个技能最多只能释放一次,已知怪物有m点血量。 现在想问你最少用几个技能能消灭掉他(血量小于等于0)。 技能的数量是n, ......
技能 双倍 怪物 同时 语言

我开源了一个 Go 学习仓库

这个学习仓库中核心包含《The Go Programing Language》一至八章讲解与分析,同时同步收录往期公众号和博客的精彩文章,更有电子书和建立模板供大家参考学习。 ......
仓库 Go

go的并发梳理

Golang不可不知的7个并发概念 原创 俞凡 DeepNoMind DeepNoMind 2024-01-06 13:10 发表于上海 3人听过 并发性支持是Golang最重要的原生特性之一,本文介绍了Golang中和并发性相关的7个概念。原文: Golang: 7 must-know concu ......

go语言多态中的类型断言

类型断言案例 package main import ( "fmt" ) type Usb interface{ Connect() DisConnect() } type Phone struct{ Name string } /* * Phone实现了Usb 接口(是指实现了Usb接口的所有方法 ......
语言 类型

Go语言defer的延迟执行机制

1 题目(单选题) 如下Go语言程序的输出结果是() package main import "fmt" func f1(name string) string { fmt.Println("in f1", name) return name } func f2(name string) strin ......
机制 语言 defer

Go函数的定义个细节梳理

func 函数名(参数列表{参数名1 类型,参数名2,类型})(返回值列表{返回值名1 类型,返回值名2 类型}){ 方法体 } 细节梳理: 函数的形参列表可以是多个,返回值列表也可以是多个。 形参列表和返回值列表的数据类型可以是值类型和引用类型。 函数的命名遵循标识符命名规范,首字母不能是数字,首 ......
函数 细节

go使用jwt创建token并验证token的有效性

一、概述 Go使用jwt创建token,验证登录用户的合法性 导入jwt包 go get github.com/dgrijalva/jwt-go 二、代码示例 1.创建token及解析token package token import ( "fmt" "go_workspace/entity" " ......
token 有效性 jwt

go-carbon v2.3.5 发布,轻量级、语义化、对开发者友好的 golang 时间处理库

carbon 是一个轻量级、语义化、对开发者友好的 golang 时间处理库,支持链式调用。 目前已被 awesome-go 收录,如果您觉得不错,请给个 star 吧 github.com/golang-module/carbon gitee.com/golang-module/carbon 安装 ......
轻量 轻量级 语义 开发者 go-carbon

从错误中学习: 了解Go编程的6个坏习惯

从错误中学习: 了解Go编程的6个坏习惯 原创 俞凡 DeepNoMind DeepNoMind 2024-01-07 10:35 发表于上海 Go编程的某些实践容易被误用或忽视,了解这些特性的特点和陷阱,可以帮助我们编写更好的代码。原文: 5+ BAD Practices In Go: Learn ......
错误 中学

go 实现一个接口

Go 语言提供了另外一种数据类型即接口,它把所有的具有共性的方法定义在一起,任何其他类型只要实现了这些方法就是实现了这个接口。 package main import ( "fmt" ) type Phone interface { call() } type NokiaPhone struct { ......
接口 go

Go+Gin+xorm+MySql实现增删改查

一、概述 承接上一篇(ps:原生增删改查),本篇使用xorm实现增删改查。 之所以要使用xrom是因为xrom可以极大的缩小操作数据库的成本。 使用rom之前需要导入响应的包 go get github.com/go-xorm/xorm #安装xorm go get xorm.io/core go ......
MySql xorm Gin Go

Go语言常见错误| 将接口作为返回值

Go语言常见错误| 将接口作为返回值 原创 云原生Go 源自开发者 2024-01-11 07:00 发表于广东 听全文 源自开发者 专注于提供关于Go语言的实用教程、案例分析、最新趋势,以及云原生技术的深度解析和实践经验分享。 69篇原创内容 公众号 在Go语言开发过程中,一个常见的错误是错误地将 ......
接口 常见 错误 语言

go中map使用

前端插件对输出数据有要求 mydata := map[string]interface{}{ "draw": draw, "recordsTotal": num, "recordsFiltered": num, "data": list, } c.JSON(http.StatusOK, mydata ......
map

2024-01-10:用go语言,给你一个下标从 0 开始的二维整数数组 pairs 其中 pairs[i] = [starti, endi] 如果 pairs 的一个重新排列 满足对每一个下标 i

2024-01-10:用go语言,给你一个下标从 0 开始的二维整数数组 pairs 其中 pairs[i] = [starti, endi] 如果 pairs 的一个重新排列 满足对每一个下标 i ( 1 <= i < pairs.length ) 都有 endi-1 == starti , 那么 ......
下标 pairs 整数 数组 语言

go的gin框架学习以及初始化---安装篇

1. 编辑器使用 vscode 设置中文,加载go语言相关插件 https://code.visualstudio.com/ 2.下载go运行环境 https://go.dev/dl/ 3.新建项目目录 bin pkg src(项目目录可存放多个项目) 每个项目文件下必须要有 go.mod 文件 4 ......
框架 gin

Go Gin+MySQL实现增删改查

一、概述 使用Gin框架+MySQL数据库实现增删改查(原生sql) 实现步骤: 1.导入Gin框架 go get -u github.com/gin-gonic/gin 2.引入MySQL驱动 go get -u github.com/go-sql-driver/mysql 3.注册Gin路由 / ......
MySQL Gin Go

LiteIDE go 错误: 进程无法启动.

一、概述 使用LiteIDE写go代码在重启项目的时候会遇到(经常性的,感觉这个款ide有点问题) go 错误: 进程无法启动. 二、解决办法 让项目运行出错一次,然后再运行就行了。 例如:你把导入的包注释掉,运行报错。然后解除注释在运行,就正常了。ps:此方法不具有普适性。 ......
进程 错误 LiteIDE go

【golang】GO之认证与授权

一般公司项目比较多,比较分散,但是对于都是公司的用户来说,用户数据一般是共享的,所以集成统一认证与授权的功能一般就必不可少,这样可以实现一个用户,分配一点权限,能访问公司很多项目. 一般的认证与授权方案有 OAuth、分布式 Session、OpenID 和 JWT 等.目前常用的是OAuth2,其 ......
golang

go 新建一个自定义包

一、概述 在go中新建一个自定义包供其他包使用。 步骤: 1.新建一个目录 2.目录下新建一个xxx.go文件 3.在xxx.go文件中使用package xxx(包名) 4.此时你的包已经新建好了 5.在需要使用上面包的地方导入即可,如:import "xxxx" ps:如果包中的内容需要对外开放 ......
go

Go语言接口防并发常用方案

Go语言接口防并发常用方案 原创 枫潇潇兮 程序员技术成长之路 2024-01-09 08:30 发表于福建 听全文 Go语言中处理并发的常见策略涉及了并发原语,如互斥锁(sync.Mutex)、读写锁(sync.RWMutex)、通道(channel)以及原子操作(sync/atomic)。接口( ......
接口 常用 语言 方案

$GOPATH/go.mod exists but should not

一、概述 开发工具:LiteIDE 现象:运行项目报以下异常 $GOPATH/go.mod exists but should not 错误: 进程退出代码 1. 二、解决办法 去掉LiteIDE开发工具中的GOPATH,然后再运行就行了(查看-->选项-->GolangPackage) ......
GOPATH exists should but mod

堆排序Go语言实现

堆排序是利用最大堆的性质将堆顶元素与数组末尾元素互换,然后重新将剩下的HeapSize-1部分的数组维护为最大堆的过程。 首先我们需要知道什么是堆,以及最大堆和最小堆等。 堆是数组,可以被看做是一颗完全二叉树(即任意两个叶子节点的深度相差不超过1且其排列与满二叉树契合),反过来我们也可以说堆是一个完 ......
语言

归并排序和快排的Go语言实现

归并排序和快排都是时间复杂度为n*logn的排序算法,都较好的的利用了分治思想,因此放在一起描述。 上图是我比较喜欢的一副展示归并和快排的示意图,我们可以通过递归来实现上述两个排序算法。 先来说归并排序: 归并排序的本质就是将要排序的数组一层一层的拆分为直到长度为1的单元素数组然后进行逐层归并。 通 ......
语言

冒泡、选择、插入排序的Go语言实现

这三种排序之所以放到一起说,是因为他们都比较基础,其最差时间复杂度皆为O(n²),空间复杂度皆为O(1)。 最差时间复杂度为O(n²)并不意味着他们就一定比快排、归并等排序算法差,因为时间复杂度只是一个理论相关值,实际排序的耗时和数组规模、数组的有序程度以及 比较/交换次数 都有关系。 鉴于算法较为 ......
语言

Go 引入Gin框架并实现Get请求

一、概述 学习一下Go语言,主要为了观察一下其语言特性。了解一下其与Java/Kotlin/C/C++/Python其语言的区别 二、搭建步骤 1.使用LiteIDE新建目录并创建一个.go文件 2.引入Gin库 a.创建mod文件,并下载导入gin go mod init go_workspace ......
框架 Gin Get Go

Go基础

Go(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。 —— Go - wikipedia.org 1 Go 安装 最新版本下载地址官方下载 golang.org,当前是 1.21.5。如无法访问,可以在 https://go.dev/dl/ 下载 ......
基础

切换模式 写文章 登录/注册 go语言json技巧忽略某个字段/忽略空值字段

10 人赞同了该文章 忽略某个字段 // 使用json tag指定json序列化与反序列化时的行为 type Person struct { Name string `json:"name"` // 指定json序列化/反序列化时使用小写name Age int64 Weight float64 ` ......
字段 语言 模式 技巧 文章

Go语言make与new函数区别

Go语言make与new方法区别 在 Go 语言中,有两个比较雷同的内置函数,分别是 new 和 make 方法,其主要用途都是用于分配相应类型的内存空间。 基本特性 make 在 Go 语言中,内置函数 make 仅支持 slice、map、channel 三种数据类型的内存创建,其返回值是所创建 ......
函数 语言 make new
共2205篇  :1/74页 首页上一页1下一页尾页