Container - 为 Go语言而生的运行时依赖注入容器

Container 是一款为 Go 语言开发的运行时依赖注入库。Go 语言的语言特性决定了实现一款类型安全的依赖注入容器并不太容易,因此 Container 大量使用了 Go 的反射机制。如果你的使用场景对性能要求并不是那个苛刻,那 Container 非常适合你。 并不是说对性能要求苛刻的环境中就不能使用了,你可以把 Container 作为一个对象依赖管理工具,在你的业务初始化时获取依赖的对象。 使用方式 go get github.com/mylxsw/container 要创建一个 Co...阅读全文

Segmentfault 2020-05-30 07:32:33 mylxsw

用golang写一个简单的游戏(三)

上篇文章中,留下了一些问题。尽管我已经添加了一个设定“炸弹”,在炸弹周围的位置是不能经过的,但是炸弹的数量还是太少,所以有些单调。我想要让游戏变得丰富些,就要增加炸弹的数量。这里就有个问题,炸弹的位置是随机的话,那就可能出现炸弹堵住了去路,造成死局,上篇文章中提到的m×n的画布上最多能有多少个炸弹这个问题不是很有意义,比如下图: 这种排列是最多个炸弹的情况,但它没啥用处。我们的问题应该是最少有多少个炸弹就能造成死局。最少是2颗炸弹就可以造成死局,但这种特色情况,我们已经做了处理--不能在起点和终...阅读全文

51CTO博客 2020-05-24 10:09:35 wx5e1abbbb0a5e5

go+govcl+go-ole实现的windows远程桌面

一直用go写后台服务用,几乎没有写过gui程序,近日对各种的golang的gui库了解了一下,最后选择了用govcl试试,感觉还是不错的。用起来很顺手,下面把我写的基于MsTscAx控件的远程桌面程序发出来和大家共享下,一共就50行代码, 效果图如下: ![image.png](https://static.studygolang.com/200525/2ac418a835b879589b61ceac203656c5.png) ```` package main import ...阅读全文

Go语言中文网 2020-05-25 17:23:25 jjmgx

golang基础库之获取本地IP

# 使用场景 做服务注册的时候,我们会将本地IP注册到注册中心(zookeeper、etcd)等,该库可以获取本地IP 和 本地IP列表,,可直接使用,方便简介,什么收藏。 # 用法 ## Installation ``` go get github.com/go-basic/ipv4 ``` ## Example ``` package main import ( "fmt" "github.com/go-basic/ipv4" ) func...阅读全文

Go语言中文网 2020-05-25 15:37:40 rushui

Go mod 使用

go modules 是 golang 1.11 新加的特性。现在1.12 已经发布了,是时候用起来了。Modules官方定义为:模块是相关Go包的集合。modules是源代码交换和版本控制的单元。 go命令直接支持使用modules,包括记录和解析对其他模块的依赖性。modules替换旧的基于GOPATH的方法来指定在给定构建中使用哪些源文件。如何使用 Modules ?把 golang 升级到 1.11(现在1.12 已经发布了,建议使用1.12)设置 GO111MODULEGO111MOD...阅读全文

Go语言中文网 2020-05-25 10:39:32 zwb1002

Go 语言使用 net 包实现 Socket 网络编程

友情提示:此篇文章大约需要阅读 10分钟12秒,不足之处请多指教,感谢你的阅读。订阅本站 此文章首发于 Debug客栈 |https://www.debuginn.cn TCP/IP TCP/IP 传输协议,即传输控制/网络协议,也叫作网络通讯协议。它是在网络的使用中的最基本的通信协议。TCP/IP 传输协议对互联网中各部分进行通信的标准和方法进行了规定。并且,TCP/IP 传输协议是保证网络数据信息及时、完整传输的两个重要的协议。TCP/IP 传输协议是严格来说是一个四层的体系结构,应用层、传...阅读全文

Segmentfault 2020-05-29 21:32:32 Meng小羽

ARTS 第2周 | LeetCode 31 | Go 会支持泛型吗 | Go 中的值方法和指针方法

ARTS ARTS 是陈浩(网名左耳朵耗子)在极客时间专栏里发起的一个活动,目的是通过分享的方式来坚持学习。 每人每周写一个 ARTS:Algorithm 是一道算法题,Review 是读一篇英文文章,Technique/Tips 是分享一个小技术,Share 是分享一个观点。 本周内容 这一周的 ARTS 你将看到 一道看似是考排列(permutation)实际上是智力题的 LeetCode 31 题 Next Permutation. Go 官方如何在保持原来内味儿的基础上尝试提供新的泛型特...阅读全文

Segmentfault 2020-05-29 10:32:37 casmo澎湃哥

Go随笔——函数的用法

定义函数包含函数名,行参列表,函数体和返回值列表,使用func进行声明,函数无参数或返回值时则形参列表和返回值列表省略func name(parameters) returns { }形参列表需要描述参数名及参数类型,所有形参为函数块局部变量,返回值需要描述返回值类型举例 1.无参 无返回值 func sayHello() { fmt.Println("hello world") } 2.有参 无返回值 func say(name string, name2 string) { fmt.Prin...阅读全文

51CTO博客 2020-05-24 16:41:18 wujunqi1996

Go的50坑:新Golang开发者要注意的陷阱、技巧和常见错误[2]

Golang作为一个略古怪而新的语言,有自己一套特色和哲学。从其他语言转来的开发者在刚接触到的时候往往大吃苦头,我也不例外。这篇文章很细致地介绍了Golang的一些常见坑点,读完全篇中枪好多次。故将其转载。由于文章很长,分为上下两部分,第一部分记录初级篇,第二部分记录进阶和高级篇:此为第二部分 目录 初级篇 开大括号不能放在单独的一行 未使用的变量 未使用的Imports 简式的变量声明仅可以在函数内部使用 使用简式声明重复声明变量 偶然的变量隐藏Accidental Variable Shad...阅读全文

Segmentfault 2020-05-29 17:32:34 阿俊

用golang写一个简单的游戏(三)

上篇文章中,留下了一些问题。尽管我已经添加了一个设定“炸弹”,在炸弹周围的位置是不能经过的,但是炸弹的数量还是太少,所以有些单调。我想要让游戏变得丰富些,就要增加炸弹的数量。这里就有个问题,炸弹的位置是随机的话,那就可能出现炸弹堵住了去路,造成死局,上篇文章中提到的m×n的画布上最多能有多少个炸弹这个问题不是很有意义,比如下图: max-booms.png 这种排列是最多个炸弹的情况,但它没啥用处。我们的问题应该是最少有多少个炸弹就能造成死局。最少是2颗炸弹就可以造成死局,但这种特殊情况,我们已...阅读全文

简书 2020-05-25 03:32:58 onepunchgo

从零开始的数组,这么设计么是为什呢?

为什么数组要从零开始? 如题,数组第一个元素为什么要从零开始,而不从一开始?感觉这很反人类呀,正常来讲,一个集合的开始,不应该从一吗? 对于这个问题,我觉得可以从以下两方面来考虑。 1设计层面 我们先了解一下数组最基本的结构和寻址方式(即实现方式)。 现在市面上无论是C、Java、PHP,还是Go或者其他编程语言,他们数组的实现方式,应该都是一样的:一段连续的内存。 file 数组在分配内存的时候,我们会知道数组的 开始地址 (PS:在目前下标为零的情况下,也等同于数组的第一个元素的地址) 11...阅读全文

Go net包剖析

目录 一、声明 二、epoll基础 三、net包到底层类图 四、连接的建立 五、异步的数据读写 六、调度有网络消息的G 七、带超时时间的读写 八、总结 声明 下面的分析均基于Golang1.14版本。 以下只分析Tcp相关的源码,其它的类似。 网络底层只分析Linux下epoll的实现。 epoll基础 epoll的相关接口 int epoll_create(int size); // 初始化epoll句柄 // 套接字的事件监听注册。含新增,修改,删除操作。可以监听读写事件(一般只监听读事件)...阅读全文

简书 2020-05-25 03:32:51 不争_900c

golang实现简化版桶算法

/** * 简化版桶算法 * 通过一维数组保存对应数字在一维数组中出现的个数,然后遍历一维数组达到排序的效果 * 这里一位数组是排序列表的范围,必须10以内的数字列表排序, 则一维数组大小为11 (N+1) * * 涉及知识点: * @随机数功能 * @时间处理和格式化 */ package main import ( "fmt" "math/rand" "time" ) func main() { var scoreList [11]int score := [5]int{5, 3, 5, 2...阅读全文

简书 2020-05-25 03:32:49 全栈运维

编程书籍

Java 《Java核心技术(Core Java)》 《Java编程思想》 《Effective Java》 《深入理解 Java 虚拟机》 《实战Java高并发程序设计》 《Java并发编程实战》 《阿里巴巴Java开发手册》 《Java 并发编程之美》 《Java 并发编程艺术》 《实战Java高并发程序设计》 《实战JAVA虚拟机》 数据结构和算法 《数据结构与算法分析 Java语言描述》 《算法 第4版》 《C语言数据结构和算法》 《大话数据结构》、《算法》、《剑指offer》《Leet...阅读全文

简书 2020-05-25 03:32:49 雪上霜

分享一款炒鸡好用的网盘+文件服务器

image 前言 在之前的图床开发中撸主曾使用了分布式文件服务FASTDFS和阿里云的OSS对象存储来存储妹子图。奈何OSS太贵,FASTDFS搭建配置又太繁琐,今天给大家推荐一款极易上手的高性能对象存储服务MinIO。 简介 MinIO 是高性能的对象存储,兼容 Amazon S3接口,充分考虑开发人员的需求和体验;支持分布式存储,具备高扩展性、高可用性;部署简单但功能丰富。官方的文档也很详细。它有多种不同的部署模式(单机部署,分布式部署)。 为什么说 MinIO 简单易用,原因就在于它的启动...阅读全文

简书 2020-05-25 03:32:49 小柒2012

Go的50坑:新Golang开发者要注意的陷阱、技巧和常见错误[2]

image Golang作为一个略古怪而新的语言,有自己一套特色和哲学。从其他语言转来的开发者在刚接触到的时候往往大吃苦头,我也不例外。这篇文章很细致地介绍了Golang的一些常见坑点,读完全篇中枪好多次。故将其转载。由于文章很长,分为上下两部分,第一部分记录初级篇,第二部分记录进阶和高级篇:此为第二部分 目录 初级篇 开大括号不能放在单独的一行 未使用的变量 未使用的Imports 简式的变量声明仅可以在函数内部使用 使用简式声明重复声明变量 偶然的变量隐藏Accidental Variabl...阅读全文

简书 2020-05-25 03:32:47 开发者阿俊

Go随笔——Go复合数据类型

1.goto跳转package mainimport "fmt"func main() {total := 0index := 0max := 100START:index += 1total += indexif index == max {goto END}goro STARTEND:fmt.Println("total")}2.数组类型1)声明数组声明需要指定组成元素的类型以及存储元素的数量(长度)。在数组声明后。其长度不可修改,数组的每个元素会根据对应类型的零值进行初始化。var nam...阅读全文

51CTO博客 2020-05-24 16:38:03 wujunqi1996

Gin框架简洁版

## 介绍 看完Gin源码后,我在想是否可以尝试自己写一个简单的web-go框架,既能帮助自己更好的理解Gin,又能当做一个测验,检测自己是否真的学会了一些东西。 所以自己做了一个简单版的框架,这个框架包含了一些Gin框架的核心内容,感兴趣的朋友可以先看这个简单版的框架,然后再看我写的[gin源码剖析](https://studygolang.com/articles/28836),可能会更加容易理解。 写这个小框架的时候,突然想起了以前看侯捷的深入浅出MFC,有一章的标题叫-...阅读全文

Go语言中文网 2020-05-24 23:26:13 shidawuhen