类型转换在程序设计中都是不可避免的问题。当然有一些语言将这个过程给模糊了,大多数时候开发者并不需要去关注这方面的问题。但是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 上切换着执行
转载
2023-07-30 22:42:06
78阅读
## 连接 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.11beta3的docker镜像,不过有点儿大800+Mb 一个现代浏览器是必须的,我平常用的是chrom
转载
2024-06-29 12:40:09
50阅读
如果有使用内存存一些简单数据的功能,可以实现下面这样的带有过期时间的内存类 内存中存储k\
原创
2022-07-23 00:53:27
240阅读
【代码】【golang】golang实现冒泡排序。
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代码很
转载
2024-01-23 23:42:07
44阅读
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语言中进程、线程、协程的区别。进程的定义:进程,是计算机中已运行程序的实体。程序本身只是指令、数据及其组织形式的描述,进程才是程序的真正运行实例。线程的定义:操作系统能够进行运算调度的最小单位。它被包含在
转载
2023-08-09 11:19:58
43阅读