Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Ian Lance Taylor, Russ Cox等人,并最终于2009年11月开源,在2012年早些时候发布了Go 1稳定版本。现在Go的开发已经是完全开放的,并且拥有一个活跃的社区。

Go语言核心36讲(Go语言进阶技术五)--学习笔记

11 | 通道的高级玩法 我们已经讨论过了通道的基本操作以及背后的规则。今天,我再来讲讲通道的高级玩法。 首先来说说单向通道。我们在说“通道”的时候指的都是双向通道,即:既可以发也可以收的通道。 所谓单向通道就是,只能发不能收,或者只能收不能发的通道。一个通道是双向的,还是单向的是由它的类型字面量体 ... »

Go语言核心36讲(Go语言进阶技术三)--学习笔记

09 | 字典的操作和约束 至今为止,我们讲过的集合类的高级数据类型都属于针对单一元素的容器。 它们或用连续存储,或用互存指针的方式收纳元素,这里的每个元素都代表了一个从属某一类型的独立值。 我们今天要讲的字典(map)却不同,它能存储的不是单一值的集合,而是键值对的集合。 在 Go 语言规范中,应 ... »

为代码编写稳定的单元测试 [Go]

为代码编写稳定的单元测试 本文档配套代码仓库地址: https://github.com/liweiforeveryoung/curd_demo 配合 git checkout 出指定 commit 以及 git diff 比较 commit 间的差别食用更佳 单元测试的作用 功能交付的保障,确保不 ... »

XiaoXiaoShuai- go

Go语言核心36讲(Go语言进阶技术二)--学习笔记

08 | container包中的那些容器 我们在上次讨论了数组和切片,当我们提到数组的时候,往往会想起链表。那么 Go 语言的链表是什么样的呢? Go 语言的链表实现在标准库的container/list代码包中。这个代码包中有两个公开的程序实体——List和Element,List 实现了一个双 ... »

Sentinel-Go 源码系列(一)|开篇

大家好呀,打算写一个 Go 语言组件源码分析系列,一是为了能学习下 Go 语言,看下别人是怎么写 Go 的,二是也掌握一个组件。 本次选择了 Sentinel-Go,一是对 Java 版本的 Sentinel 算是有一些了解,也在生产上落地过,二是感觉他的代码应该不会太复杂(仅仅是感觉),三是在云原 ... »

zhuochongdashi

SignalR 在React/GO技术栈的生产应用

哼哧哼哧半年,优化改进了一个运维开发web平台。 本文记录SignalR在react/golang 技术栈的生产小实践。 1. 背景 有个前后端分离的运维开发web平台, 后端会间隔5分钟同步一次数据,现在需要将最新一次同步的时间推送到web前端。 说到[web服务端推送],立马想到SignalR, ... »

听说,99% 的 Go 程序员都被 defer 坑过

原文链接: 听说,99% 的 Go 程序员都被 defer 坑过 先声明:我被坑过。 之前写 Go 专栏时,写过一篇文章:Go 专栏|错误处理:defer,panic 和 recover。有小伙伴留言说:道理都懂,但还是不知道怎么用,而且还总出现莫名奇妙的问题。 出问题就对了,这个小东西坏的很,一不 ... »

alwaysbeta

Go语言核心36讲(Go语言进阶技术一)--学习笔记

07 | 数组和切片 我们这次主要讨论 Go 语言的数组(array)类型和切片(slice)类型。 它们的共同点是都属于集合类的类型,并且,它们的值也都可以用来存储某一种类型的值(或者说元素)。 不过,它们最重要的不同是:数组类型的值(以下简称数组)的长度是固定的,而切片类型的值(以下简称切片)是 ... »

简单的 Go 入门教程

Go(又称 Golang )是 Google 开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言 Docker 和 Kubernetes 都是使用 Go 进行开发的,这几年 Go 越来越流行,生态也越来越好了 初学 Go 的时候会遇到了一些小问题,在一些教程中没有提及或者因为时效性的 ... »

aaronlinv Go

Go语言核心36讲(Go语言基础知识六)--学习笔记

06 | 程序实体的那些事儿 (下) 在上一篇文章,我们一直都在围绕着可重名变量,也就是不同代码块中的重名变量,进行了讨论。还记得吗? 最后我强调,如果可重名变量的类型不同,那么就需要引起我们的特别关注了,它们之间可能会存在“屏蔽”的现象。 必要时,我们需要严格地检查它们的类型,但是怎样检查呢?咱们 ... »

Go语言核心36讲(Go语言基础知识五)--学习笔记

05 | 程序实体的那些事儿(中) 在前文中,我解释过代码块的含义。Go 语言的代码块是一层套一层的,就像大圆套小圆。 一个代码块可以有若干个子代码块;但对于每个代码块,最多只会有一个直接包含它的代码块(后者可以简称为前者的外层代码块)。 这种代码块的划分,也间接地决定了程序实体的作用域。我们今天就 ... »

Go语言核心36讲(Go语言基础知识四)--学习笔记

04 | 程序实体的那些事儿(上) 还记得吗?Go 语言中的程序实体包括变量、常量、函数、结构体和接口。 Go 语言是静态类型的编程语言,所以我们在声明变量或常量的时候,都需要指定它们的类型,或者给予足够的信息,这样才可以让 Go 语言能够推导出它们的类型。 问题:声明变量有几种方式? packag ... »

Go语言核心36讲(Go语言基础知识三)--学习笔记

03 | 库源码文件 在我的定义中,库源码文件是不能被直接运行的源码文件,它仅用于存放程序实体,这些程序实体可以被其他代码使用(只要遵从 Go 语言规范的话)。 这里的“其他代码”可以与被使用的程序实体在同一个源码文件内,也可以在其他源码文件,甚至其他代码包中。 那么程序实体是什么呢?在 Go 语言 ... »

go 连接MSSQLServer数据库【遇到的坑】

前言:项目测试需要用到mssqlserver数据库连接,遇到坑,自己爬直接上代码: package main import ( "database/sql" "fmt" "strings" _ "github.com/denisenkom/go-mssqldb" ) func main() { va ... »

allenxj Go

go语言系列-家庭收支记账软件项目

项目1 家庭收支记账软件项目 项目开发流程说明 项目需求说明 1) 模拟实现基于文本界面的《家庭记账软件》 2) 该软件能够记录家庭的收入、支出,并能够打印收支明细表 项目的界面 项目代码实现 实现基 »

zisefeizhu

go-家庭收支记账软件例子

家庭收支记账软件项目 项目需求说明 1) 模拟实现基于文本界面的《家庭记账软件》 2) 该软件能够记录家庭的收入、支出,并能够打印收支明细表 项目的界面 看代码效果 项目代码实现 实现基本功能(先使用 »

ygjzs