类型转换在程序设计中都是不可避免问题。当然有一些语言将这个过程给模糊了,大多数时候开发者并不需要去关注这方面的问题。但是golang类型匹配是很严格,不同类型之间通常需要手动转换,编译器不会代你去做这个事。我之所以说通常需要手动转换,是因为interface类型作为一个特例,会有不同处理方式。golang所有类型都有自己默认值,对此我做了个测试。$GOPATH/sr
package main import "fmt" var  yeartime int64 func main(){    fmt.Println("请输入要判断年份:")    fmt.Scanln(&yeartime) &n
原创 2019-02-26 14:40:22
1659阅读
当需要在多个 goroutine 中传递上下文信息时,可以使用 Context 实现。Context 除了用来传递上下文信息,还可以用于传递终结执行子任务相关信号,中止多个执行子任务 goroutine。Context 中提供以下接口:type Context interface { Deadline() (deadline time.Time, ok bool) Done
一、线程安全判断标准线程安全判断主要依赖以下几个核心标准:是否有共享可变状态如果多个线程或协程共享同一份可变数据(如全局变量、堆内存中对象),且存在并发修改可能,则需要考虑线程安全性。示例:如果一个对象字段在多个协程中被修改,未加锁或未使用原子操作时,可能导致数据竞争。是否使用线程安全数据结构使用内置线程安全数据结构(如 sync.Map、channel)或第三方库提供线程安全集
嗨,您好!今天我们将讨论Golang及其丰富功能。 Golang是一种静态类型化,高性能且简单语言,这几天以来一直使我感到很开心。 由于我正在从事一个项目,所以我最近开始学习Go,事实证明它非常有效,最重要是,它是一种简单语言。 Go不允许您创建不使用内容,请对其进行更好注释,然后运行程序,否则编译器将不允许您前进。我不会说我是Golang粉丝,但是来自C,C ++背景,
转载 2024-02-02 09:31:23
36阅读
golang其他数据类型如Int,float等,跟大多数编程语言类似,主要介绍slice,channel,map底层实现逻辑:目录一:slice底层数据结构:slice创建slice追加slice拷贝二:channel底层数据结构channel创建向channel写数据过程从一个channel读数据简单过程关闭channelchannel导致panic场景常见用法三:map底层结构ma
转载 2023-10-12 12:38:50
103阅读
基于环形缓冲区双端队列实现代码:package main const minCapacity = 16 type Deque struct { buf []interface{} head int tail int count int minCap int } func NewDeque() *Deque { return &Deque{ buf: make(
转载 2024-04-06 20:58:37
56阅读
前言最近用到了一些 Golang 异步编程地方,感觉 Golang 相对于其他语言(如 Java)对多线程编程支持非常大,使用起来也非常方便。于是决定了解一下 Goroutine 底层原理。Goroutine 本质是协程,是实现并行计算核心。只需要在对应函数前加上 Go 关键词即可异步执行:go func() { }()基本概念并发:一段时间内执行多个程序,即在一个 cpu 上切换着执行
## 连接 Redis 并判断键是否存在 ### 引言 在 golang 开发中,连接 Redis 并判断键是否存在是一个常见需求。本文将介绍如何使用 golang 连接 Redis,并使用 Redis 客户端库实现判断键是否存在功能。 ### 整体流程 下面展示了连接 Redis 并判断键是否存在整体流程,包括以下步骤: ```mermaid stateDiagram [*]
原创 2024-01-07 09:51:25
73阅读
# Golang Redis 判断 Key Redis 是一种快速、开源内存键值数据库,常用于缓存、消息队列等场景。在使用 Redis 过程中,我们经常需要判断某个 Key 是否存在。本文将介绍如何使用 Golang 与 Redis 进行交互,并实现判断 Key 是否存在功能。 ## 安装 Redis 在开始之前,我们需要先安装 Redis 并启动 Redis 服务。Redis 安装
原创 2024-01-11 10:19:51
76阅读
Go语言新版本1.11要支持Webassembly啦,作为同时关注这两项技术我来说这确实是个好消息。但目前golang还未正式发布1.11版本,最新是rc1版。等不及了,先下载下来试一下。过程记录环境准备因为我机器上已经有了老版本go环境,又不想搞多版本兼容,我就直接下载了一个go 1.11beta3docker镜像,不过有点儿大800+Mb 一个现代浏览器是必须,我平常用是chrom
转载 2024-06-29 12:40:09
50阅读
如果有使用内存存一些简单数据功能,可以实现下面这样带有过期时间内存类 内存中存储k\
原创 2022-07-23 00:53:27
240阅读
【代码】【golanggolang实现冒泡排序。
原创 2月前
51阅读
1、概述经常在开源库中看到rune关键字,从golang源码中看出,它是int32别名(-231~231-1),对比byte(-128~127),可表示字符更多。2、使用由于rune可表示范围更大,所以能处理一切字符,当然也包括中文字符。在平时计算中文字符,可用rune。查询官方解释如下:// rune is an alias for int32 and is equivalent to
转载 2024-04-25 16:45:47
75阅读
package in_optrator import ( "fmt" "github.com/emirpasic/gods/sets/hashset" "testing" ) func TestInOperation(t *testing.T) { // New可以方不同类型元素 h1 := ha ...
转载 2021-09-12 11:33:00
169阅读
2评论
Golang操作redis中间件:https://mp.weixin.qq.com/s/EYmZHvVHsSAh03RzywG3GQ以上。
转载 2023-06-13 21:49:47
119阅读
事务概念事务是将批量增删改操作视为一个整体,作为一个整体,它们要么全部成功,要么全部失败——这一特性称为事务原子性(原子是不可再分割);事务应用场景很多,例如在一次电商交易中,只有资金出入表、物流表、交易记录表、订单表、购物车表等一系列表数据变动全部严丝合缝分毫不差时,才能视为交易成功,此时可以提交事务;只要有一点对不上号地方,本次交易就不能视为成功,所有的数据应全部回滚至交易之前
转载 2023-12-15 19:47:40
29阅读
—— PPAP大叔Golang是静态语言,性能很好,当它不那么灵活,不好在运行时动态运行代码。Python是动态语言,非常灵活,但是性能很差。古人云:“鱼和熊掌不能兼得”。但是如今有了Go-Python,鱼和熊掌也可以兼得。首先安装go-pythongo get github.com/sbinet/go-python我们使用下面的代码启动Python命令行解释器 go run test.go代码很
websocket分为握手和数据传输阶段,即进行了HTTP握手 + 双工TCP连接 RFC协议文档在:http://tools.ietf.org/html/rfc6455 握手阶段 握手阶段就是普通HTTP 客户端发送消息: GET /chat HTTP/1.1 Host: server.exa
转载 2018-12-18 20:51:00
157阅读
2评论
最近经常有同学在小猿圈网站留言说:小猿圈网站上边课程太多了,而且全部免费,自己就忍不住都想学习,尤其是学习了python和go之后,就有些混淆了概念,今天小猿圈就给大家分享一下python和go语言中进程、线程、协程区别。进程定义:进程,是计算机中已运行程序实体。程序本身只是指令、数据及其组织形式描述,进程才是程序真正运行实例。线程定义:操作系统能够进行运算调度最小单位。它被包含在
  • 1
  • 2
  • 3
  • 4
  • 5