Golang
文章平均质量分 76
Golang
_李少侠_
这个作者很懒,什么都没留下…
展开
-
Go WebAssembly 入门
WebAssembly 可以将其他语言C/Go/Rust等语言编译成wasm可执行二进制文件,然后通过浏览器来执行wasm。原创 2022-11-07 23:30:28 · 1821 阅读 · 0 评论 -
Golang — net/http简介
通过简单的示例介绍net/http包的相关使用原创 2022-07-10 10:54:40 · 2352 阅读 · 0 评论 -
Golang — RESTful框架 go-restful
go-restful 是一个 Golang 第三方库,是一个轻量的 RESTful API 框架,基于 Golang Build-in 的 http/net 库。适用于构建灵活多变的 Web Application,Kubernetes 的 ApiServer 也使用了 go-restful。原创 2022-07-03 21:15:58 · 2661 阅读 · 0 评论 -
Golang — 命令行工具cobra
Cobra是一个用于Go语言的CLI框架。它包含一个用于创建强大的现代CLI应用程序的库,以及一个用于快速生成基于Cobra的应用程序和命令文件的工具。原创 2022-07-02 16:58:54 · 1059 阅读 · 0 评论 -
Golang — template
Go语言内置模板引擎语法介绍原创 2022-06-29 00:01:29 · 873 阅读 · 0 评论 -
Context
文章目录ContextContext结构Context的衍生WithCancelWithDeadlineWithTimeoutWithValueContext 使用原则Contextcontext包不仅实现了在程序单元之间共享状态变量的方法,同时能通过简单的方法,使我们在被调用程序单元的外部,通过设置ctx变量值,将过期或撤销这些信号传递给被调用的程序单元。在网络编程中,若存在A调用B的API, B再调用C的API,若A调用B取消,那也要取消B调用C,通过在A,B,C的API调用之间传递Context,原创 2021-04-13 15:42:06 · 430 阅读 · 0 评论 -
golang channel 使用总结
不同于传统的多线程并发模型使用共享内存来实现线程间通信的方式,golang 的哲学是通过 channel 进行协程(goroutine)之间的通信来实现数据共享:Do not communicate by sharing memory; instead, share memory by communicating.这种方式的优点是通过提供原子的通信原语,避免了竞态情形(race condition)下复杂的锁机制。channel 可以看成一个 FIFO 队列,对 FIFO 队列的读写都是原子的操作转载 2021-04-13 10:56:03 · 205 阅读 · 0 评论 -
goroutine
文章目录goroutine线程和协程创建goroutineGo并发模型优点缺点goroutinegoroutine是Go语言提供的一种用户态线程,有时我们也称之为协程。但是它比线程更小,十几个goroutine可能体现在底层就是五六个线程,Go语言内部实现了这些goroutine之间的内存共享。执行goroutine只需极少的栈内存(大概是4~5KB),当然会根据相应的数据伸缩。也正因为如此,可同时运行成千上万个并发任务。goroutine比thread更易用、更高效、更轻便。线程和协程进程:拥有原创 2021-04-13 10:40:20 · 778 阅读 · 0 评论 -
反射
文章目录反射TypeOf 与 ValueOfType 与 Value反射实践反射Golang提供了一种机制,在编译时不知道类型的情况下,可更新变量、运行时查看值、调用方法以及直接对他们的布局进行操作的机制,称为反射。TypeOf 与 ValueOf类型作用reflect.ValueOf(i interface{})获取输入参数接口中的数据的值,如果为空则返回0reflect.TypeOf(i interface{})动态获取输入参数接口中的值的类型,如果为空则返回nil原创 2021-04-12 17:50:28 · 111 阅读 · 0 评论 -
defer关键字
defer在golang当中,defer代码块会在函数调用链表中增加一个函数调用。这个函数调用不是普通的函数调用,而是会在函数正常返回,也就是return之后添加一个函数调用。因此,defer通常用来释放函数内部变量。通过defer,我们可以在代码中优雅的关闭/清理代码中所使用的变量。defer作为golang清理变量的特性,有其独有且明确的行为。defer触发时机A “defer” statement invokes a function whose execution is deferred原创 2021-04-11 21:14:30 · 125 阅读 · 0 评论 -
map与sync.Map
文章目录map基本操作声明及初始化增删改查并发场景下的mapsync.Map基本使用sync.Map使用场景map基本操作声明及初始化var m map[string]stringmap声明的时候默认值是nil ,此时进行取值,返回的是对应类型的零值(不存在也是返回零值)。因此想要正常的使用map,必须要对其进行初始化。否则在使用时会panic.m := make(map[string]string)//orm := map[string]string{ "one" : "原创 2021-04-11 08:05:22 · 1484 阅读 · 1 评论 -
new与make
文章目录newmakenew// The new built-in function allocates memory. The first argument is a type,// not a value, and the value returned is a pointer to a newly// allocated zero value of that type.func new(Type) *Type该方法的参数要求传入一个类型,而不是一个值,它会申请一个该类型大小的内存空间,并原创 2021-04-10 22:01:29 · 77 阅读 · 0 评论 -
函数与方法
文章目录函数方法值接收者与指针接收者区别函数函数的格式:func+函数名+ 参数 + 返回值(可选) + 函数体例如:func myfunction( a, b int) (int) { }在Go中,函数被看作第一类值(first-class values),函数像其他值一样,拥有类型,可以被赋值给其他变量,传递给函数,从函数返回。函数类型的零值是nil。在golang中还有两个特殊的函数,main函数和init函数。main函数作为一个程序的入口,只能有一个。func main原创 2021-04-10 21:41:45 · 205 阅读 · 0 评论