![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
golang
有理叔
软件爱好广泛,对代码质量和结构有深刻的理解,代码洁癖,掌握Linux C语言开发,Android应用开发,Python开发,iOS开发等,最近沉迷Golang不可自拔
展开
-
Golang 1.18 Workspace的使用
Golang 1.18 Workspace的使用原创 2022-09-15 11:12:08 · 1605 阅读 · 0 评论 -
像用Python一样使用Golang
gomacro使用原创 2022-07-08 14:46:29 · 439 阅读 · 0 评论 -
golang如何更好地使用channel
最近学习了《GO语言并发之道》这本书,获益匪浅,其中channel方面的知识了解了更多,主要是以下几点:1. channel在不同条件下读写,会有不同的行为形式,后面会通过实验说明;2. channel使用完是要close的,而一般由写端创建和关闭,不要在读端关闭,上面的实验结果会说明这样做的原因;3. channel结合gorouting有很多的实践方式,还可以构造流式处理。先来...原创 2020-05-01 06:33:48 · 633 阅读 · 0 评论 -
golang使用坑两处
今天的文章给大家看看两处golang使用中存在的坑,了解这两处坑,能够防止一些隐蔽性比较大的bug出现。闲话少叙,上代码package mainimport ( "errors" "fmt")func main() { var err error defer func(err error) { fmt.Printf("inner %v\n", &err) ...原创 2020-04-25 14:28:22 · 738 阅读 · 0 评论 -
Golang真香之Go Module
Golang使用将近有一年多了,期间使用Golang做过不少项目,使用中对其愈发喜爱,一个词概括,真香!闲话少说,下面进入主题。用过Java的都知道Java有meaven,gradle等代码依赖管理工具,使用这些工具,你只需要添加依赖,在构建时,会自动下载对应的包并在项目中集成。我们可以控制使用的包的版本还有兼容性,选择自己项目需要的包进行下载使用。Go Module是 Go 语言的一种...原创 2020-04-12 08:11:02 · 930 阅读 · 0 评论 -
Golang使用感受
之前一段时间,我曾经做过一些有关Golang的介绍。最近从使用Golang的过程中,又有一些新的感受,与大家分享一下。我比较反对语言之间的比较,一门编程语言能做什么,取决于用户用它做了什么,而一门语言擅长于做什么,取决于用户经常用它做什么,它的语法在解决哪个领域的问题比较有优势。我只是单纯站在一门语言的角度,来谈谈自己对它的客观看法。Golang能做什么?目前我使用Golang做过Web应用,...原创 2019-07-06 07:57:21 · 2918 阅读 · 3 评论 -
Golang使用WebSocket通信
使用Golang能够创建WebSocket通信,只需要使用golang.org/x/net/websocket包即可,该包有可能被墙,无法使用go get下载,但是我们可以从golang中国提供的地址下载,然后将包放在对应的路径下。WebSocket是一种通信协议,旨在改善HTTP作为无状态协议通信的效率问题,WebSocket是客户端与服务器之间的全双工连接,客户端和服务器只需要建立一次连接...原创 2018-10-27 12:52:03 · 31346 阅读 · 9 评论 -
Golang如何优雅地提取JSON数据中需要的字段数据
JSON数据是我们开发中经常遇到的一种数据格式,一般通用的做法是,我们通过建立实体类,然后利用一些框架将JSON数据转化为对应的实体类对象,这样我们就可以方便地访问JSON数据了。但是有些时候,一个JSON对象很大,字段很多,而我们可能只需要其中的几个字段值,这在调用第三方API时可能经常发生,我们完全没有必要为了访问几个字段而创建一个很大的实体类对象,使用过C#的开发者会很自然地想到LINQ...原创 2018-10-13 10:12:02 · 22221 阅读 · 0 评论 -
Golang对excel进行处理
国庆节祝我们的祖国更加繁荣昌盛,想必大家在国庆期间也好好放松了一下,中秋节过节停更了一次,家里面有孩子了,放假期间希望能好好陪陪孩子,请大家谅解。今天发一篇技术文章,帮助大家逐渐回归到正常的工作状态。之前有关Golang的文章主要是基于Golang的标准库来讲解的,今天我们来看看Golang的一个开源库,它可以用来处理xlsx文件,首先下载包go get github.com/teale...原创 2018-10-06 09:59:58 · 14939 阅读 · 0 评论 -
利用golang通道优化TCP Socket服务器
前面的几篇文章分别介绍了UDP和TCP进行Socket编程的方法,在TCP的文章中,我们除了传统的阻塞型服务器,还给出了多线程服务器的实现方式。今天我们利用golang的通道,给出一种更加高效的服务器设计。package mainimport ( "fmt" "net" "os" "strconv" "strings" "go-study/socket/config"原创 2018-09-15 10:25:10 · 9057 阅读 · 3 评论 -
golang TCP Socket编程
上一篇文章介绍了golang进行UDP编程的方式,本篇文章继续golang的网络编程,我们看看如何实现TCP编程。UDP传输的是数据包,传输时不会建立实际的连接,UDP传输数据不会保证可靠性。TCP则不同,它会维持客户端和服务器之间的连接,并且保证数据传输的可靠性,服务器和客户端之间会维护连接,使用流的方式进行数据传输。因此,UDP客户端接收的是一个个数据包,而TCP客户端接收到的是流,因此会存在...原创 2018-09-09 09:54:55 · 7311 阅读 · 0 评论 -
golang使用UDP进行网络通信
golang提供了网络编程使用net包,使用net包可以进行很基础的socket编程,如果希望了解socket的一些基础知识,可以参看我之前的文章,虽然是Java示例,但是前面的原理说明不会因为语言的差别而不同。今天我们一起看看使用golang如何实现UDP编程。代码分为server端和client两部分,实现的功能与Java版的类似。他们共同使用一份config.go文件。config.go...原创 2018-09-02 16:21:14 · 53060 阅读 · 1 评论 -
Golang如何正确的停止Ticker
Golang可以利用time包的Ticker实现定时器的作用,最近使用Ticker时,发现调用Ticker的Stop方法无法正确的停止Ticker,协程会阻塞在等待Ticker的C通道处,精简后的代码如下:func UseTickerWrong() *time.Ticker { ticker := time.NewTicker(5 * time.Second) go func(ticke...原创 2018-08-25 10:44:27 · 15924 阅读 · 0 评论 -
Golang并发以及通道的使用
Golang最擅长的就是并发编程,使用Golang可以很方便的进行并发编程。先看一段普通的代码package mainimport ( "fmt" "time")func Foo(i int) { fmt.Printf("%d will sleep\n", i) time.Sleep(5 * time.Second) fmt.Printf("%d wake up\n", ...原创 2018-08-18 11:30:06 · 3825 阅读 · 0 评论 -
Golang结构体中Tag的使用
Golang中可以为结构体的字段添加tag,这类似于Java中为类的属性添加的注解,Golang本身的encoding/json包解析json使用了tag,一些开源的ORM框架,也广泛使用了tag,那么,我们如何通过代码自己实现tag的解析,从而简化结构体字段的使用方式呢?下面看一个例子。假设有一个Person结构体定义如下type Person struct { Name ...原创 2018-07-28 13:50:09 · 12404 阅读 · 0 评论 -
Golang方法不同类型接收者的区别
Golang中对方法和函数进行了区分,函数就是传统意义上的函数,定义方式如下:func 函数名(参数列表) (返回值列表) {}方法在函数的基础上添加了一个接收者,接收者可以是结构体类型的变量或指针,也可以是slice或者map,也就是说,无法将基本类型的变量或指针作为方法的接收者,只有复合类型的变量或指针才可以作为接收者,定义方法的方式如下:func (接收者) 方法名(参数列表...原创 2018-08-05 11:41:25 · 2815 阅读 · 2 评论 -
Golang基本程序结构
今天的文章,我们来了解一下Golang的程序结构,只有知道Golang的组成,才能够在使用时有的放矢,选择合适的方式。包和包的初始化Golang中的包是按目录结构组织的,下面假设是一个GOPATH下的src中的目录结构src folder1 folder2 foo1.go foo2.go则我们的包引用路...原创 2018-07-21 13:36:44 · 1092 阅读 · 0 评论 -
闲聊Golang对C语言的改进
看到标题,大家可能会奇怪,为什么将Golang与C语言进行比较?这里主要有三方面的原因,一方面,可以说Golang和C都是源于同样的理念设计的编程语言,上一篇文章有说过,UNIX创始人之一Ken Thompson是Golang的设计者,同时,他也是C语言设计者之一,他深知C语言存在的问题和影响其开发效率的因素,希望在Golang上得以改善;其次,Golang设计之初就希望成为和C/C++一样的系统...原创 2018-07-14 12:04:25 · 4530 阅读 · 0 评论 -
初识golang
go语言是Google于2009年发布的一款编程语言,设计者之一的Ken Thompson名声显赫,他是图灵奖获得者,同时是UNIX创始人之一。go语言语法简洁,运行效率高,由于之前有很多语言的经验可以借鉴,go语言尽可能解决以前的编程语言存在的问题并引入了自己的优势。最近学习了go语言,总的来说,go语言解决了很多C语言开发中的痛点,同时保留了C语言的语法简洁的特点,与Java,C++等语言形成...原创 2018-07-07 11:00:40 · 499 阅读 · 0 评论