Golang 面向对象编程-非侵入式接口

Golang 面向对象编程-非侵入式接口 在go语言中,一个类只需要实现了接口要求的所有函数,我们就说这个类实现了该接口,例如: type File struct { // ... } func (f *File) Read(buf []byte) (n int, err error) func (f *File) Write(buf []byte) (n int, err error) func (f *File) Seek(off int64, whence int) (pos int64,...阅读全文

简书 2020-06-01 11:32:49 __sk

ARTS 第3周| LeetCode 140 Word Break| Go GC 历史| return defer 哪个先执行

ARTS ARTS 是陈浩(网名左耳朵耗子)在极客时间专栏里发起的一个活动,目的是通过分享的方式来坚持学习。 每人每周写一个 ARTS:Algorithm 是一道算法题,Review 是读一篇英文文章,Technique/Tips 是分享一个小技术,Share 是分享一个观点。 本周内容 这一周的 ARTS 你将看到: Work Break II 这道题的评论区竟然有一半人都在吐槽测试例太恶心? 一篇文章了解 Golang GC 的“昨天、今天和明天”。 一个老 Gopher 常谈的问题,到底 ...阅读全文

Segmentfault 2020-06-03 12:32:36 casmo澎湃哥

Aura: 一个专注于监控和采集的 SDK 组件

## ???? Overview ☁️ 在云原生时代,以 [Prometheus](https://prometheus.io) 为中心的监控生态已经逐渐完善,社区也出现了大量的中间件,数据库以及各种基础组件的 exporter,Prometheus 官方也给出了维护了一份 exporter 列表 [instrumenting/exporters](https://prometheus.io/docs/instrumenting/exporters)。 但是 Prometheus 的...阅读全文

Go语言中文网 2020-06-01 10:24:46 chenjiandongx

24. 理解 Go 语言中的协程:goroutine

Hi,大家好,我是明哥。 在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不防关注一下,一起学习,一起成长。 我的在线博客:http://golang.iswbm.com我的 Github:github.com/iswbm/GolangCodingTime 说到Go语言,很多没接触过它的人,对它的第一印象,一定是它从语言层面天生支持并发,...阅读全文

Segmentfault 2020-06-03 12:32:36 Python编程时光

在 Go 语言项目中使用 Travis CI

原文链接:在 Go 语言项目中使用 Travis CI Travis CI 是一种免费的持续集成服务,而 持续集成(CI, Continuous integration) 是一种软件工程流程,概括来讲就是多提交小的 Commit 来更快的发现软件的 Bug,从而提高软件质量。 本文会详细介绍如何在 Go 语言项目中使用 Travis CI。 准备工作 GitHub 账号:用于保存项目。 Travis CI 账号:点击右上角的 Sign in with GitHub 即可通过 GitHub 创建关...阅读全文

Segmentfault 2020-06-03 12:32:35 line

在 Go 语言项目中使用 Docker

原文链接:在 Go 语言项目中使用 Docker 容器(Container) 将程序及其所需的任何内容捆绑在一起,包括依赖项、工具和配置文件等等。这样使得程序不受环境的干扰,真正意义上做到开发环境和生成环境完全一致。 而 Docker 在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护。与传统虚拟机相比,Docker 也有许多优点,如:更高效的系统资源利用和更快速的启动时间。 在本文中,通过一个简单的 Go 语言项目,您将学习如何在 Go 语言项...阅读全文

Segmentfault 2020-06-03 09:32:34 line

Go Modules 详解

原文链接:Go Modules 详解 Go 1.11 和 Go 1.12 包含了初步的 Go Modules 支持,且计划在 2019 年 8 月发布的 Go 1.13 会在所有开发过程中默认使用 Go Modules。 Go Modules 是为了提升使用其他开发者代码,即添加依赖项(模块、包)时的体验,也是为了让代码的正确性、安全性得到保障。并且 Go Modules 可以使用 GOPROXY 环境变量来解决中国大陆无法使用 go get 的问题。 所以学习跟 Go Modules 有关的知...阅读全文

Segmentfault 2020-06-03 09:32:33 line

Go 语言闭包详解

原文链接:Go 语言闭包详解 什么是闭包?闭包是由函数和与其相关的引用环境组合而成的实体。 下面就来通过几个例子来说明 Go 语言中的闭包以及由闭包引用产生的问题。 函数变量(函数值) 在说明闭包之前,先来了解一下什么是函数变量。 在 Go 语言中,函数被看作是第一类值,这意味着函数像变量一样,有类型、有值,其他普通变量能做的事它也可以。 func square(x int) { println(x * x) } 直接调用:square(1) 把函数当成变量一样赋值:s := square;接着...阅读全文

Segmentfault 2020-06-03 07:32:32 line

Go 语言的 4 个特性改动

原文链接:Go 语言的 4 个特性改动 在 Go1.1 可以看到某个版本的 Go 语言一些改动文档(修改 URL 参数查看别的版本)。 其中以 Go1.1#language 标签下关于语言特性方面的尤为重要。 在每个 Go 语言新版本发布后浏览一下,是个良好的习惯。 下面我会从 Go1.1 到 Go1.11 以来挑 4 个值得讨论的改动来跟大家分享一下。 三索引切片 版本: Go1.2 在现有数组或切片下,使用第二个冒号来指示新生成的切片的容量。 func TestThreeIndex(t *t...阅读全文

Segmentfault 2020-06-02 17:32:37 line

Go 语言单元测试实践

原文链接:Go 语言单元测试实践 什么是软件测试? 软件测试是一个过程,该过程对软件(计算机程序)进行各种操作来发现软件错误。 为什么要进行软件测试? 进行软件测试可以帮助我们验证软件的各种功能正常,保证软件的正常工作从而提高软件质量。并且在实践中已被证明是颇有成效的。 测试驱动开发的由来: 一个从大量实践中得出的结论:人们发现在软件开发周期中,软件错误每进入到下一个阶段要修正它所付出的时间和人力会出人意表的翻上十倍。所以更早地进行软件测试可以更早地发现软件错误,从而大大减少后期修正的成本。后来...阅读全文

Segmentfault 2020-06-02 14:32:36 line

golang面试题:字符串转成byte数组,会发生内存拷贝吗?

问题 字符串转成byte数组,会发生内存拷贝吗? 怎么答 字符串转成切片,会产生拷贝。严格来说,只要是发生类型强转都会发生内存拷贝。那么问题来了。 频繁的内存拷贝操作听起来对性能不大友好。有没有什么办法可以在字符串转成切片的时候不用发生拷贝呢? 代码实现 package main import ( "fmt" "reflect" "unsafe" ) func main() { a :="aaa" ssh := *(*reflect.StringHeader)(unsafe.Pointer(&a...阅读全文

掘金 2020年05月31日 9號同学

Golang - sync包

​ Golang的 sync包提供了大量的线程同步操作的类. 所以满足我们日常使用. 包含锁,和安全的集合. 其中,关于golang 各种锁的实现,请看这个文章,我个人感觉写的不错juejin.im/entry/5ed32… sync.Mutex 第一种就是 Mutex 为互斥锁 , 实现跟Java的reentrantlock很像. 基本都是自旋锁, 我们下面有一个场景 , 将变量x累加50000次 我们开启5个goroutine去执行 func main() { var x = 0 for n...阅读全文

掘金 2020年05月31日 AnthonyDong

Gox语言目前支持的Go语言标准库与第三方库-GX4.2

Gox语言目前内置支持大多数Go语言(Golang)的官方标准库,也支持一些常用的第三方库。这些内置的库使用时无需导入,直接按一定的名称规则使用即可:类似 strings这样一级名称的ku直接使用即可,例如 strings.Contains(a, "b");对于多级的包名,规定“/”字符用下划线“_”代替,其他字符一律去除,例如 net/http直接用net_http引用即可。另外github.com这样的名称将去掉后面的“.com”后缀,例如github.com/topxeq/sqltk用gi...阅读全文

简书 2020-05-31 22:33:19 陆满庭

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

上回分析到了炸弹的数量与位置问题,得出了随机位置的最多炸弹数量,但炸弹数量看起来并不多,这使得路径十分随意,因此,炸弹数量我不想太少,直接自己手动定义了。其实还有个思路的,就是按照区域随机分配炸弹,比如每个5×5区域就随机分配一个炸弹,实现方式还有其他形式,不在这个问题上纠结了。我今天想实现一个功能,自动打印出从起点到终点的最短路径,以便在炸弹数量足够多的时候,很快得出一个答案。 一个m×n的地图,我们很容易知道最短路径是m+n-1。不过炸弹的设定,让这个最短路径发生了变化,炸弹的周围不能经过,...阅读全文

简书 2020-05-31 22:33:15 onepunchgo

基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(v6.9.0版)

TableGo_20200520 v6.9.0 正式版发布,此次版本更新如下:1、新增对JDK9及以上版本Java环境的支持2、生成JavaBean更名为生成数据模型并且提供了C#、C++、Golang、Rust、Python、Objective-C、Swift等编程语言数据模型的简单模板3、新增生成SpringBoot项目工程的功能,在生成自定义文件界面直接生成一个可以跑起来的项目4、新增对数据库视图的支持5、新增大量自定义模板示例6、新增SQL查询导出数据功能,在生成自定义文件时通过配置SQ...阅读全文

简书 2020-05-31 22:33:14 TableGo

【CMake 系列】(二)第三方依赖管理

接着上次的【CMake系列】(一)入门 继续讲。 这次,主要说说 CMake 的依赖管理。 依赖管理 当我们说 CMake 的依赖管理的时候,往往说的是 C/C++ 项目的依赖管理,但是这门古老的语言,到目前为止,还是没有一个官方大一统的依赖管理工具。 而回头看看它的后来者,Ruby 有 gem、Node.js 有 npm、 Golang 有 go mod、Rust 有 cargo。 你可能会提到 C++ 在 C++20 中,引入了 Module,只是目前 编译器的支持 还是不够,更别提那些著名...阅读全文

简书 2020-05-31 22:32:54 xizhibei

Go mod常用与高级操作

1. 开启Go module 1.11和1.12版本 将下面两个设置添加到系统的环境变量中 GO111MODULE=on GOPROXY=https://goproxy.io 1.13版本之后 这种方式并不会覆盖之前的配置,需要先把系统的环境变量里面的给删掉再设置 go env -w GO111MODULE=on go env -w GOPROXY=https://goproxy.cn,https://goproxy.io,direct 2. go get使用 使用go module之后,go ...阅读全文

简书 2020-05-31 22:32:53 剑心zzw

0杂项

go mod initgo mod tidy 包依赖关系go mod download 源码下载gin中文快速入门https://gin-gonic.com/zh-cn/docs/quickstart/Jsoniter Jsoniter 的 Golang 版本可以比标准库(encoding/json)快 6 倍之多。之前在Gin中已经说到, Gin比Martini的效率高好多耶, 究其原因是因为使用了httprouter这个路由框架, httprouter的git地址是: httprouter源...阅读全文

简书 2020-05-31 22:32:53 范佳伟_f5b7