JBL T280TWS X 真无线蓝牙耳机 入耳式防水防汗音乐运动跑步耳机 通话降噪耳机
首页 编程 Golang
Go语言读取txt文档的操作方法
读取文件是所有编程语言中最常见的操作之一。本教程我们将了解如何使用 Go 读取txt文档。 文档内容每行是一个文件名信息,含有空格区分不同项; ioutil.ReadFile返回的是[]bytes切片类型,使用string()转换为string类型,并用strings.Split()按行分割成切片; 把每行的文件名信息按空格分割成切片存入var dataNameSlice [][]string; 每一行的文件名信息处理成一个string字符串,存入var dataName []string,这里用strings.Join()方法将前3项信息以下划线连接;
2022-01-22 7
一文搞懂Golang 时间和日期相关函数
目录 一、基本介绍 1.格式化日期时间 2.时间的常量 二、使用介绍 1.内置函数 一、基本介绍 在编程中,程序员会经常使用到日期相关的函数,比如:统计某段代码执行花费的时间等等。在 Go 中,开发者为我们提供了 time 包,用于显示时间以及测量使用(日历的计算采用的是公历),详细信息见:Golang 的标准库 1)time.Time 类型:用于表示时间 package main import ( "fmt" "time" ) func main
2021-12-06 16
Go语言基础切片的创建及初始化示例详解
目录 概述 语法 一、创建和初始化切片 make 字面量 二、使用切片 赋值和切片 切片增长 遍历切片 总结 总示例 示例一  两个slice是否相等 示例二 两个数字是否包含 概述 切片是一种动态数组 按需自动改变大小 与数组相比,切片的长度可以在运行时修改 语法 一、创建和初始化切片
2021-11-17 18
Go语言基础map用法及示例详解
目录 概述 语法 声明和初始化 读取 删除 遍历 总结 示例 概述 map是基于key-value键值对的无序的集合 Go语言中的map是引用类型 必须初始化才能使用。 语法 声明和初始化 配合make使用,否则是nil var map[KeyType]ValueType //KeyType:表示键的类型 //ValueType:表示键对应的值的类型 make(map[KeyType]V
2021-11-17 22
Go语言基础函数基本用法及示例详解
目录 概述 语法 函数定义 一.函数参数 无参数无返回 有参数有返回 函数值传递 函数引用传递 可变参数列表 无默认参数 函数作为参数 二、返回值 多个返回值 跳过返回值 匿名函数 匿名函数可以赋值给一个变量 为函数类型添加方法 总结 示例 概述 函数是基本的代码块,用于执行一个任务 语法 函数定义
2021-11-17 21
golang中的struct操作
struct是实现面向对象的重要技术,基本上都跟类型声明type name underlying-type结合使用。 struct是值类型,所以它的零值是所有成员的零值。由于值类型在作为函数参数时的局限性,所以经常配合指针一起使用。 声明 type Employee struct { ID int Name string Address string } 一行一个成员,中间没有逗号或分号,大写的成员可以在包外访问。 如果类型相同,也可以考虑定义在一行,例如 type Employee struct {
2021-11-11 20
Go 语言中 20 个占位符的整理
目录 一、概念 二、哪些函数支持 三、占位符使用 四、普通占位符 1. %v、%+v、%#v 2. %T 3. %% 五、布尔占位符 六、整数占位符 1. %b 2. %c 3. %d、%5d、%-5d、%05d 4. %o、%#o 5. %q 6. %x、%#x 7. %X、%#X 8. %U、%#U 七、浮点数与复数 1. %b 2. %e、%E 3. %f、%.2f 4. %g、%.3g
2021-10-16 131
Golang中channel的原理解读(推荐)
数据结构 channel的数据结构在$GOROOT/src/runtime/chan.go文件下: type hchan struct { qcount uint // 当前队列中剩余元素个数 dataqsiz uint // 环形队列长度,即可以存放的元素个数 buf unsafe.Pointer // 环形队列指针 elemsize uint16 // 每个元素的大小 closed uint32 // 标记是否关闭
2021-10-16 41
Go语言并发编程 sync.Once
sync.Once用于保证某个动作只被执行一次,可用于单例模式中,比如初始化配置。我们知道init()函数也只会执行一次,不过它是在main()函数之前执行,如果想要在代码执行过程中只运行某个动作一次,可以使用sync.Once,下面来介绍一下它的使用方法。 先来看下面的代码: package main import ( "fmt" "sync" ) func main() { var num = 6 var once sync.Once add_one := func() { num = num + 1 } minu
2021-10-16 44
Go 通过结构struct实现接口interface的问题
目录 一、通过结构(struct) 实现 接口(interface) 二、代码示例 一、通过结构(struct) 实现 接口(interface) 1、在了解iris框架的时候,经常看到有这样去写的使用一个空结构体作为接收器,来调用方法,有点好奇这样做有什么意义。 解释:在 Go 语言中,一个 struct 实现了某个接口里的所有方法,就叫做这个 struct 实现了该接口。 2、空结构体有以下几大特点 A、不占用内存地址。 B、地址不变 3、首先我们知道interface定义的是抽象方法,而下面的func是它的具体
2021-10-05 71
golang实现一个简单的websocket聊天室功能
基本原理: 1.引入了 golang.org/x/net/websocket 包。 2.监听端口。 3.客户端连接时,发送结构体: {"type":"login","uid":"我是用户名","msg":"登陆成功"}' .服务端根据login信息,维护一个map,用来存放不同用户的连接体。 4.有用户发言时,将msg内容轮询发给给一个用户。 5.客户端使用js websocket功能,当作客户端,开始聊天。 不足之处:只是根据客户端传的uid来区分用户,没有进行身份校验,不过对一个demo来说,也没必要。 server代码: package main im
2021-10-05 58
深入理解go slice结构
文章 slice介绍 append的机制 slice tricks go data slice array的语法: [4]int{1,2,3,4}, [...]int{1,2,3}。在go中array是值类型,这就意味着一个类型为array的变量名并不是一个指针,当传递值是,array总是被复制。 slice的语法: []int{1,2,3,4}, make([]int), make([]int,10) 当make只有两个参数时,cap和len相同。 slice本质上是array的一个片段的描述,它包含3部分: [ptr, len, ca
2021-09-15 49
Golang表示枚举类型的详细讲解
枚举,是一种重要的数据类型,由一组键值对组成,通常用来在编程语言中充当常量的标识符。在主流行编程语言如 c、 java 等,都有原生支持。在 go 中,大家却找不到 enum 或者其它直接用来声明枚举类型的关键字。从熟悉其它编程语言的开发者转用 go 编程,刚开始会比较难接受这种情况。其实,如果你看到如何在 go 中表示枚举类型时,可能会感受到 go 语言设计者对简洁性、问题考虑的深度,是一般资浅工程师无法比拟的。 其实,在 go 语言设计者的眼里,enum 本质是常量,为什么要多余一个关键字呢?在 go 只是没有 enum 关键字而已,其表现枚举的形式,与其它语言别无太大区别。
2021-09-04 55
golang 语言中错误处理机制
与其他主流语言如 Javascript、Java 和 Python 相比,Golang 的错误处理方式可能和这些你熟悉的语言有所不同。所以才有了这个想法根大家聊一聊 golang 的错误处理方式,以及实际开发中应该如何对错误进行处理。因为分享面对 Golang有一个基本的了解 developers, 所以一些简单地方就不做赘述了。 如何定义错误 在 golang 语言中,无论是在类型检查还是编译过程中,都是将错误看做值来对待,和 string 或者 integer 这些类型值并不差别。声明一个 string 类型变量和声明一个 error 类型变量是没什么区别的。 你可以定义
2021-08-30 86
Golang并发操作中常见的读写锁详析
互斥锁简单粗暴,谁拿到谁操作。今天给大家介绍一下读写锁,读写锁比互斥锁略微复杂一些,不过我相信我们今天能够把他拿下! golang读写锁,其特征在于 读锁:可以同时进行多个协程读操作,不允许写操作 写锁:只允许同时有一个协程进行写操作,不允许其他写操作和读操作 读写锁有两种模式。没错!一种是读模式,一种是写模式。当他为写模式的话,作用和互斥锁差不多,只允许有一个协程抢到这把锁,其他协程乖乖排队。但是读模式就不一样了,他允许你多个协程读,但是不能写。总结起来就是: 仅读模式: 多协程可读不可写 仅写模式: 单协程可写不可读 在32位的操作
2021-08-30 101
Go中的条件语句Switch示例详解
Switch简介 Go的switch的基本功能和C、Java类似: switch 语句用于基于不同条件执行不同动作,每一个 case 分支都是唯一的,从上至下逐一测试,直到匹配为止。 匹配项后面也不需要再加 break。 特点: switch 默认情况下 case 最后自带 break 语句,匹配成功后就不会执行其他 case 重点介绍Go当中的Switch的两个特别点:** 表达式判断为true还需要执行后面的 case,可以使用 fallthrough type-switch 来判断某个 interface 变量中实际存储的变量类
2021-08-23 70
Go Plugins插件的实现方式
官方实现 golang 1.8 及以上版本提供了一个创建共享库(shared object)的新工具,称为 Plugins。目前 Plugins 仅在 Linux、FreeBSD 和 macOS 上受支持,且只支持 golang 调用。​ 使用示例,定义一个 plugin.go : package main import ( "log" ) func init() { log.Println("plugin init") } type SayHello struct { } func (s *SayHello) CallMe(name
2021-08-07 67
使用GO语言实现Mysql数据库CURD的简单示例
目录 〇、介绍驱动包和增强版Mysql操作库Sqlx 一、先导入驱动包和增强版Mysql操作库Sqlx 二、insert操作 三、delete操作 四、update操作 五、select操作 ?、介绍驱动包和增强版Mysql操作库Sqlx go-mysql-driver是go语言标准库(SDK)database/sql的”加工产品“,质量有保障! go-mysql-driver运行时间虽然比较长,但是内存使用较少。 go-mysql-driver实现了database/sql,即便不是mysql,是使用其他数据库,也
2021-08-07 93
go使用Gin框架利用阿里云实现短信验证码功能
第一步,调用阿里云Api发送短信并存入数据库或者是redis当中 阿里云短信平台网址 [https://api.aliyun.com/new#/?product=Dysmsapi&version=2017-05-25&api=SendSms&params={"RegionId":"cn-hangzhou","TemplateCode":"345","PhoneNumbers":"17633802772"}&tab=DEMO&lang=GO] 使用json配置文件 // 配置文件 "sms
2021-08-04 85
手把手教你导入Go语言第三方库
目录 环境 环境变量 实践导包 最好的学习方式就是实践。 我们通过导入gin包来深入学习。 环境 go 1.13.5 goland 2019.3.1 manjaro-gnome3.34.2 环境变量 首先回想一下,我们安装goland的时候,设置了几个比较重要的环境变量,也就是GOROOT和GOPATH。 GOROOT比较容易理解。也就是我们go语言的安装目录,标准库什么的就放在里面的。在linux中的话,默认安装到/usr/lib/go中,我们创建项目时选择的SDK也就是这个。
2021-08-04 122
Go语言实现Base64、Base58编码与解码
目录 1. 常见的编码 2. go语言实现base64的编码与解码 2.1 Base64编码原理 2.2 实现Base64的编码与解码 3. go语言实现base58编码与解码 3.1 base58的编码过程 3.2 base58编解码具体实现 4. 最后 1. 常见的编码 base64:26个小写字母、26个大写字母、10个数字、/、+ base58(区块链):去掉6个容易混淆的,去掉0,大写的O、大写的I、小写的L、/、+/、+影响双击选择
2021-07-26 138