Go语言中文网 为您找到相关结果 3638

leetcode_91

Golang: 思路:DP这类的题一般都不简单,需要考虑的很全面,稍有不慎就翻车,这题挂了三次,全是最简单的测试用例上,成功的把自己通过率拉到了平均线上。 这题是常态DP,没啥难度,但这题需要注意几个点: 字符串第一个字符如果为0,可直接返回0 字符串中间出现了0,那么要查看0前一位是不是1或者是2,不是可以直接返回0 代码如下: func numDecodings(s string) int { if len(s)==0{ return len(s) } if s[0]=='0' { return 0 } if len(s)==1{ return 1 } arr:=make([]int,len(s)) arr[0]=1 if s[1]=='0' { if s[0]=='1'||s[0]==...阅读全文

博文 2020-02-21 09:32:46 淳属虚构

Go 笔记之如何测试你的 Go 代码

不论是开源项目,还是日常程序的开发,测试都是必不可少的一个环节。今天我们开始进入 Go 测试模块 testing 的介绍。 差不多两周没有更新 Go 文章了,最近状态不是太好。这篇文章本来准备写的内容非常丰富,结果有点力不从心,移除了好几个小节。思考下来,还是决定拆成几篇。 另外,参考资料中有几篇很精彩的文章,有兴趣也可以读一下。 简单概述 我们选择开源项目,通常会比较关注这个项目的测试用例编写的是否完善,一个优秀项目的测试一般写的不会差。为了日后自己能写出一个好的项目,测试这块还是要好好学习下。 常接触的测试主要是单元测试和性能测试。毫无意外,go 的 testing 也支持这两种测试。单元测试用于模块测试,而性能则是由基准测试完成,即 benchmark。 Go 测试模块除了上面提到的功...阅读全文

博文 2019-09-03 11:04:22 波罗学

【Zinx第三章-基础路由模块】Golang轻量级并发服务器框架

【Zinx教程目录】Zinx源代码https://github.com/aceld/zinx (请拷贝网址,在浏览器打开[简书不让自动跳转])完整教程电子版(在线高清)-下载Zinx框架视频教程(框架篇)(完整版下载)链接在下面正文 Zinx框架视频教程(应用篇)(完整版下载)链接在下面正文 Zinx开发API文档Zinx第一章-引言Zinx第二章-初识Zinx框架Zinx第三章-基础路由模块Zinx第四章-全局配置Zinx第五章-消息封装 Zinx第六章-多路由模式 Zinx第七章-读写分离模型 Zinx第八章-消息队列及多任务 Zinx第九章-链接管理 Zinx第十章-连接属性设置 【Zinx应用案例-MMO多人在线游戏】(1)案例介绍(2)AOI兴趣点算法(3)数据传输协议protoc...阅读全文

博文 2019-07-09 09:02:38 aceld

windows环境下,VS Code配置GO语言开发环境

前言 部门内部使用微服务用到猪齿鱼框架,可是猪齿鱼很多组件都用到了GO语言,想看懂最起码需要学习一下语法。于是,GO语言学习之旅开始了。 先用菜鸟教程学习了语法什么的,大概的练练手。 因为要看源码,看人家的项目,于是需要有个编辑器看着方便,我们用的vsCode,所以就要在VSCode中配置GO语言开发环境 好吧,还是需要借助一下搜索引擎 前置 1.Golang环境配置 GO语言环境安装包下载地址:https://golang.google.cn/dl/选择windows,如下图安装完成后需要配置环境变量,主要有三个地方需要配置。用户变量中的GOPATH,系统环境变量中的GOROOT与Path,具体解释 GOPATH GO语言的工作空间,可以自己随便建一个文件夹就行 例如我的就是D:Go_Wo...阅读全文

博文 2019-10-17 10:02:48 liuxliang

go测试

Go测试 gotest文件命名格式:xxx_test.gogotest文方法命名格式:Testxxx.go func TestLRU(t *testing.T) { // 测试内容 } 运行 go test -v 输出测试结果。 查看代码覆盖率 生成文件 go test -coverprofile='c.out' 查看 执行 go tool corver -html='c.out'会在浏览器中显示覆盖率 执行go tool corver -func='c.out'打印每个方法的输出覆盖率 性能测试 func BenchAdd(b *testing.B) { // } 执行go test -bench . 会输出测试结果 生成文件 go test -bench . -cpuprofile cp...阅读全文

博文 2020-01-09 14:32:53 发条家的橙子

go 学习笔记之环境搭建

千里之行始于足下,开始 Go 语言学习之旅前,首先要搭建好本地开发环境,然后就可以放心大胆瞎折腾了. Go 的环境安装和其他语言安装没什么特别注意之处,下载安装包下一步下一步直到完成,可能唯一需要注意的就是 $GOPATH 环境变量的设置问题. 不过,简单起见,目前采用默认配置,等到比较熟悉 Go 语言时候再自定义设置也不迟,因此采用喜闻乐见的傻瓜式安装方式吧! go-base-setup-index.png Go 下载安装 由于众所周知的原因,谷歌被墙,因此 Go 的国外官网无法访问,好在已提供 Go 的中国官网可以正常访问. go-base-setup-website.png 国外官网: https://golang.org/ 国内官网: https://golang.google.cn...阅读全文

博文 2019-08-01 20:33:52 雪之梦技术驿站

《Go 语言程序设计》读书笔记(十)反射

Go语言提供了一种机制在运行时更新变量和检查它们的值、调用它们的方法和它们支持的操作,但是在编译时并不知道这些变量的具体类型。这种机制被称为反射。反射也可以让我们将类型本身作为第一类的值类型处理。 在本章,我们将探讨Go语言的反射特性,看看它可以给语言增加哪些表达力,以及在两个至关重要的API是如何用反射机制的:一个是fmt包提供的字符串格式功能,另一个是类似encoding/json和encoding/xml提供的针对特定协议的编解码功能。反射是一个复杂的内省技术,不应该随意使用,因此,尽管上面这些包内部都是用反射技术实现的,但是它们自己的API都没有公开反射相关的接口。 为何需要反射 有时候我们需要编写一个函数能够处理任何类型,一个大家熟悉的例子是fmt.Fprintf函数提供的字符串格...阅读全文

博文 2020-01-17 17:32:40 Kevin

聊聊在Go语言里使用继承的翻车经历

Go不是面向对象的语言,但是使用组合、嵌套和接口可以支持代码的复用和多态。关于结构体嵌套:外层结构体类型通过匿名嵌套一个已命名的结构体类型后就可以获得匿名成员类型的所有导出成员,而且也获得了该类型导出的全部的方法。比如下面这个例子: type ShapeInterface interface { GetName() string } type Shape struct { name string } func (s *Shape) GetName() string { return s.name } type Rectangle struct { Shape w, h float64 } 复制代码Shape类型上定义了GetName()方法,而在矩形Rectangle的定义中匿名嵌套了Sha...阅读全文

博文 2020-04-20 13:34:22 kevinyan

Go语言开发环境搭建-Vs Code

一.下载Go并配置环境变量https://studygolang.com/dl下载需要的版本,这里暂时只赘述windows,虚拟机的还没有去尝试,日后有机会,会再补一篇文章。配置GOROOT: 这里是本地安装路径配置GOPATH:这里是工作路径->GOPATH目录约定有三个子目录:->src 存放源代码(比如:.go .c .h .s等)->pkg 编译后生成的文件(比如:.a)->bin 编译后生成的可执行文件(为了方便,可以把此目录加入到 windows的PATH变量中,在环境变量path后追加%GOPATH%\bin,此举是为了保证在安装第三方工具时能正常使用)*D:\Go\bin在go安装完成后会自动拼接到path上,没有则需要自行输入*如果go项目有多个目录, 且都采用该目录,则用...阅读全文

博文 2019-08-08 22:33:00 Caesar_fbc8

Go 笔记之如何测试你的 Go 代码

不论是开源项目,还是日常程序的开发,测试都是必不可少的一个环节。今天我们开始进入 Go 测试模块 testing 的介绍。 差不多两周没有更新 Go 文章了,最近状态不是太好。这篇文章本来准备写的内容非常丰富,结果有点力不从心,移除了好几个小节。思考下来,还是决定拆成几篇。 另外,参考资料中有几篇很精彩的文章,有兴趣也可以读一下。 简单概述 我们选择开源项目,通常会比较关注这个项目的测试用例编写的是否完善,一个优秀项目的测试一般写的不会差。为了日后自己能写出一个好的项目,测试这块还是要好好学习下。 常接触的测试主要是单元测试和性能测试。毫无意外,go 的 testing 也支持这两种测试。单元测试用于模块测试,而性能则是由基准测试完成,即 benchmark。 Go 测试模块除了上面提到的功...阅读全文

博文 2019-09-03 22:32:46 波罗学

Golang系列之Go语言入门(一)

序列-Go语言来源 Golang是一门年轻而有活力的语言,2007年Robert、Rob和Ken 在Google开发,于2009年正式发布; Go语言的初衷:作者们希望能使复杂的、高效系统的编写变得简单、可靠;同时也期望Go能成为一个相对通用的编程环境,推崇少即是多的概念、 Go编程语言(或称--golang),是云计算时代下的C语言,Docker、Kubernetes、Etcd等都是由Golang完成的,经过数年不断的改进,Go语言本身在开发效率和程序运行效率方面又提升了无数个台阶。 Go语言环境搭建 part 1. Win下面环境搭建 : 下载golang,选择windows的版本 ,下载地址 https://studygolang.com/dl 下载完成后,解压到本地目录,然后配置环境...阅读全文

[10月12日][全国在线]让it更精简,让项目更敏捷-如何成功运用敏捷方法进行项目管理与实施

项目管理在中国10多年的发展历程中,越来越体现它的价值与作用,随着社会在不断进步,IT技术和管理的发展也逐渐从单纯的引入过渡到创新的阶段,更多的组织或团队会发现: 客户的需求在不停的变化,如何应对; 小型团队用项目管理的流程会力不从心; 上线时间越来越短,如何能快速了解市场推出的新产品; 团队文化构建难,庞大研发团队的协作管理问题; 交付客户满意度低; 技术快速发展,流程停滞不前版本迭代质量低; 针对上述问题,敏捷思想可以很好的加以应对,光环国际结合软件开发与互联网企业特点,通过分析当前企业所存在的普遍问题,详细阐述如何成功运用敏捷方法进行项目管理与实施,加强团队有效沟通,准确捕获客户需求,高质量进行产品交付。逐一阐述敏捷思维与原则、特征、过程与角...阅读全文

1. 介绍与安装

1. 介绍与安装 Golang 是什么 Go 亦称为 Golang(按照 Rob Pike 说法,语言叫做 Go,Golang 只是官方网站的网址),是由谷歌开发的一个开源的编译型的静态语言。 Golang 的主要关注点是使得高可用性和可扩展性的 Web 应用的开发变得简便容易。(Go 的定位是系统编程语言,只是对 Web 开发支持较好) 为何选择 Golang 既然有很多其他编程语言可以做同样的工作,如 Python,Ruby,Nodejs 等,为什么要选择 Golang 作为服务端编程语言? 以下是我使用 Go 语言时发现的一些优点: 并发是语言的一部分(并非通过标准库实现),所以编写多线程程序会是一件很容易的事。后续教程将会讨论到,并发是通过 Goroutines 和 channels...阅读全文

博文 2019-08-28 11:32:52 泷汰泱

leetcode_355

Golang: 思路:设计推特,搬运我的题解 这里的代码依旧有着很大优化的空间,比如按时间排序上,可以维护一个堆;对于每一个用户,我们可以只保存他/她的最近十条推特 但是不太想写了,因为比较麻烦。。。 globalId:类似timestamp时间标记 follower:记录每个用户关注的用户列表 checkFollowed表示关注关系,用户A是否关注了用户B,key为“id id”的形式,应该是可以保证唯一性的 twitter存储每个用户发过的推,但是value存的是globalId,方便以后取出来 findtwitter存储的是所有用户发的推 注意,这套代码是不满足并行与分布式的要求的。。。 代码如下: type Twitter struct { globalId int follower...阅读全文

博文 2020-04-13 11:32:46 淳属虚构

Go 语言单元测试实践

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

博文 2020-05-31 21:34:51 sulinehk

1.go安装

本小结介绍如何安装和使用golang 开始之前 开始之前先介绍几个概念1.go语言的环境变量我们只介绍GOROOT和GOPATH GOROOT golang 的安装路径,当你安装好golang之后其实这个就已经有了 GOPATH go命令依赖的一个重要环境变量:$GOPATH 可以把这个目录理解为工作目录 -- bin // golang编译可执行文件存放路径 -- pkg // golang编译包时,生成的.a文件存放路径 -- src // 源码路径。按照golang默认约定,go run,go install等命令的当前工作路径(即在此路径下执行上述命令)。 2.go语言的常用命令这里只介绍三个我们用到的命令 go run 编译并直接运行程序,它会产生一个临时文件(但不会生成 .exe...阅读全文

博文 2019-02-21 15:36:22 wz669

使用 Go 进行单元测试

简介 单元测试 性能测试 性能分析 测试覆盖率 总结 当前部分的代码 简介 日常开发中, 测试是不能缺少的. Go 标准库中有一个叫做 testing 的测试框架, 可以用于单元测试和性能测试. 它是和命令 go test 集成使用的. 测试文件是以后缀 _test.go 命名的, 通常和被测试的文件放在同一个包中. 单元测试 单元测试的格式形如: func TestAbs(t *testing.T) { got := Abs(-1) if got != 1 { t.Errorf("Abs(-1) = %d; want 1", got) } } 复制代码在 util 目录下创建一个文件 util_test.go, 添加一个单元测试: package util import "testing"...阅读全文

博文 2019-11-07 14:04:20 帅气猫咪

Go入门系列(一)伊始

欢迎来到Golang入门系列,说起这个系列出现的缘由,1、Golang的潜力无疑;2、笔者希望把所有有价值的主流语言全学一遍。 首先,我们来明确下定位,Go始于07年,在09年开源,官方团队来自Google。 然后是最耐人寻味的一点,它是一门面向对象的or面向过程的语言? Yes and no. Although Go has types and methods and allows an object-oriented style of programming, there is no type hierarchy. The concept of “interface” in Go provides a different approach that we believe is easy ...阅读全文

博文 2020-02-24 21:32:58 RabbitMask

Golang学习——interface接口学习(二)

Golang接口断言学习 一.类型断言 二.接口断言 1.if else结构 接口断言2.switch结构 接口断言 在Golang中,空接口 interface{}没有定义任何函数,因此Golang 中所有类型都实现了空接口。当一个函数的形参是interface{},那么在函数中,需要对形参进行断言,从而得到它的真实类型。 一.类型断言 在学习接口断言之前,先了解一下类型断言,其实接口断言也是在判断类型。 类型断言,通过它可以做到以下几件事情: 检查 i 是否为 nil检查 i 存储的值是否为某个类型 通常有两种方式: 第一种: t := i.(T) 复制代码 这个表达式可以断言一个接口对象i里不是 nil,并且接口对象i存储的值的类型是 T,如果断言成功,就会返回值给t,如果断言失败,就...阅读全文

博文 2020-05-07 11:36:19 相守之路

Kubernetes准入控制简单实践

1. 准入控制 一般我们操作Kubernetes资源的流程是如下这样的: API Server认证; API Server鉴权; APT Server实际处理请求并持久化到ETCD; 而准入控制则具有一种能力,它可以在认证、鉴权之后对象被持久化之前对请求进行拦截,只有这些准入控制都通过之后才允许放行请求。截止Kubernetes v1.17版本,它自身已经内置支持很多admission插件,详情可移步Kubernetes内置准入控制器列表,但这些不是笔者在此述说的重点,今天主要谈谈admission插件在实际环境的动态扩展实现:admission webhook。 2. Admission Webhook Admission webhook 是一种用于接收准入请求并对其进行处理的 HTTP ...阅读全文

博文 2020-04-09 18:32:53 VienFu

Golang Failpoint 的设计与实现

作者:龙恒 对于一个大型复杂的系统来说,通常包含多个模块或多个组件构成,模拟各个子系统的故障是测试中必不可少的环节,并且这些故障模拟必须做到无侵入地集成到自动化测试系统中,通过在自动化测试中自动激活这些故障点来模拟故障,并观测最终结果是否符合预期结果来判断系统的正确性和稳定性。如果在一个分布式系统中需要专门请一位同事来插拔网线来模拟网络异常,一个存储系统中需要通过破坏硬盘来模拟磁盘损坏,昂贵的测试成本会让测试成为一场灾难,并且难以模拟一些需要精细化控制的的测试。所以我们需要一些自动化的方式来进行确定性的故障测试。 Failpoint 项目 就是为此而生,它是 FreeBSD failpoints 的 Golang 实现,允许在代码中注入错误或异常行为, 并由环境变量或代码动态激活来触发这些异...阅读全文

博文 2019-05-05 18:35:00 PingCAP

Go 每日一库之 go-homedir

简介 今天我们来看一个很小,很实用的库go-homedir。顾名思义,go-homedir用来获取用户的主目录。 实际上,使用标准库os/user我们也可以得到这个信息: package main import ( "fmt" "log" "os/user" ) func main() { u, err := user.Current() if err != nil { log.Fatal(err) } fmt.Println("Home dir:", u.HomeDir) } 复制代码那么为什么还要go-homedir库? 在 Darwin 系统上,标准库os/user的使用需要 cgo。所以,任何使用os/user的代码都不能交叉编译。 但是,大多数人使用os/user的目的仅仅只是想获...阅读全文

两个链表的第一个公共结点

题目描述 输入两个链表,找出它们的第一个公共结点。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的) 思路 假设两个链表的第一个公共结点为c。 链表1可以表示为a+c,链表2可以表示为b+c。 可以通过a+c+b+c = b+c+a+c来快速求出c的值,若没有公共结点,那c便是null。 可以根据下图,简单理解下这个过程。 Java代码实现 public class Solution { public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) { ListNode p1 = pHead1; ListNode p2 = pHead2; while(p1 != p2){ p...阅读全文

博文 2020-02-27 12:32:41 youzhihua

go 的介绍与安装

1. 介绍与安装 Golang 是什么 Go 亦称为 Golang(按照 Rob Pike 说法,语言叫做 Go,Golang 只是官方网站的网址),是由谷歌开发的一个开源的编译型的静态语言。 Golang 的主要关注点是使得高可用性和可扩展性的 Web 应用的开发变得简便容易。(Go 的定位是系统编程语言,只是对 Web 开发支持较好) 为何选择 Golang 既然有很多其他编程语言可以做同样的工作,如 Python,Ruby,Nodejs 等,为什么要选择 Golang 作为服务端编程语言? 以下是我使用 Go 语言时发现的一些优点: 并发是语言的一部分(并非通过标准库实现),所以编写多线程程序会是一件很容易的事。后续教程将会讨论到,并发是通过 Goroutines 和 channels...阅读全文

博文 2019-04-03 18:35:08 听砜

像 Awesome-Go 一样提升企业 Go 项目代码质量

1. Awesome-Go 项目 参与过awesome-go项目的gopher都知道,每个MR都必须满足它以下的要求: Make sure that you've checked the boxes below before you submit PR: [ ] I have added my package in alphabetical order. [ ] I have an appropriate description with correct grammar. [ ] I know that this package was not listed before. [ ] I have added godoc link to the repo and to my pull requ...阅读全文

博文 2019-06-14 09:32:38 JayL

Go 模块--开始使用 Go Modules

Go的1.11和1.12版本包括对模块--新的Go依赖管理系统的初步支持,使依赖版本信息变得明确且更易于管理。这篇博客文章介绍了开始使用模块所需的基本操作。模块是存储在根目录有一个 go.mod文件的文件树中的 Go 包(package)的集合。go.mod文件定义了模块的module path(也是模块根目录的导入路径)以及模块依赖的其他模块的要求,满足了依赖要求模块才能被成功构建起来。每个依赖模块的要求被写为一个模块路径和相应的模块版本。下面展示了一个简单的go.mod文件 module example.com/hello go 1.12 require rsc.io/quote v1.5.2 从Go 1.11开始,当当前目录或任何父目录有go.mod时,只要该目录位于$GOPATH/s...阅读全文

博文 2020-02-22 15:32:45 Java天天

【Go】使用压缩文件优化io (一)

文连接:blog.thinkeridea.com/201906/go/c… 最近遇到一个日志备份 io 过高的问题,业务日志每十分钟备份一次,本来是用 Python 写一个根据规则扫描备份日志问题不大,但是随着业务越来越多,单机上的日志文件越来越大,文件数量也越来越多,导致每每备份的瞬间 io 阻塞严重, CPU 和 load 异常的高,好在备份速度很快,对业务影响不是很大,这个问题会随着业务增长,越来越明显,这段时间抽空对备份方式做了优化,效果十分显著,整理篇文章记录一下。 背景说明 服务器配置:4 核 8G; 磁盘:500G 每十分钟需要上传:18 个文件,高峰时期约 10 G 左右 业务日志为了保证可靠性,会先写入磁盘文件,每10分钟切分日志文件,然后在下十分钟第一分时备份日志到 OS...阅读全文

博文 2019-07-01 11:34:21 thinkeridea

维基链WICC | 项目进展周报第27期(3.18~3.24)

技术&产品周报应用建设维基时代APP v1.2.0发布:①维基时代国际版上线。(100%)②维基时代钱包更换新节点。(100%)③维基时代:任意第三方应用可调起维基时代统一签名接口,进一步提升开发者友好性。④维基时代“发现”版块上线。⑤用户行为数据统计计划上线。T2D2建设CTO陈晓东在CSDN平台直播分享《区块链技术架构与应用架构》,共119人参与直播答疑环节。完成Baas平台智能合约链上数据查询接口。 (100%)为海外开发者团队提供智能合约开发技术支持。(80%)为提升开发者开发效率的智能合约IDE工具 前端开发中。(50%)WRC20标准的智能合约demo持续优化。 (50%)区块链浏览器原型设计。(50%)公链建设解决golang钱包库投票接口相关问题。(100%)升级签名算法以提...阅读全文

博文 2019-03-26 13:34:41 维基区块链

[译] Go 语言概览

文地址:A bird's eye view of Go 原文作者:Axel Wagner 译文出自:掘金翻译计划 本文永久链接:github.com/xitu/gold-m… 译者:JackEggie 校对者:40m41h42t, JalanJiang Go 语言概览 本文摘要:本文非常笼统地总结了 Go 语言的定义、生态系统和实现方式,也尽力给出了与不同的需求所对应的参考文档,详情参见本文末尾。 每当我们说起“Go 语言”的时候,可能会因为场景的不同聊到很多完全不同的东西。因此,我尝试着对 Go 语言和其生态系统做一个概述,并在各部分内容中都列出相关的文档(这可能有点像是大杂烩,其中还包含了我最近实际遇到的许多问题)。让我们开始吧: Go 编程语言 Go 语言是一种编程语言。作为一种权威,...阅读全文

博文 2019-07-25 02:04:28 JackEggie

go 学习笔记之工作空间

搭建好 Go 的基本环境后,现在可以正式开始 Go 语言的学习之旅,初学时建议在默认的 GOPATH 工作空间规范编写代码,基本目录结构大概是这个样子. . |-- bin | `-- hello.exe |-- pkg | `-- windows_amd64 | `-- github.com | `-- snowdreams1006 | `-- learn-go | `-- strings.a `-- src `-- github.com `-- snowdreams1006 `-- learn-go |-- README.md |-- hello | `-- hello.go `-- strings |-- reverse.go `-- reverse_test.go Go 相关的代码保...阅读全文

博文 2019-08-02 21:32:41 雪之梦技术驿站

【环境篇】golang环境变量二三事(二)

继续上篇文章的学习,今天来看看其他的环境变量。 GOEXE The executable file name suffix (".exe" on Windows, "" on other systems). 编译后的二进制文件后缀,在Windows平台是".exe",在其他平台是""。 GOFLAGS 这个变量看起来比较陌生,用的不多,我们看看文档里是怎么解释的: A space-separated list of -flag=value settings to applyto go commands by default, when the given flag is known bythe current command. Each entry must be a standalone ...阅读全文

博文 2020-01-17 11:33:44 wx5e1abbbb0a5e5

【译】Go 语言项目源码贡献官方指导文档

以前给 Go 语言项目源码提交过一些 commits,期间阅读他们的官方指导文档的时候觉得这篇指导文档可以作为绝佳的关于大型软件项目的规范管理的参考,因为最近又提交了几个 commits,就又把这篇文档再看了一遍,有感于 Go 团队在项目管理和工程实践上的一些宝贵经验,就把文档翻译成了中文;一来为了更加深入地理解 Go 语言团队的项目工程最佳实践,二来则是为了给其他有意给 Go 语言源码提交贡献的开发者提供一点参考。 导言 Go 语言项目欢迎所有的代码贡献者。 这是一份指导你完成向 Go 语言项目贡献代码整个流程的文档,会略微跟其他开源项目所使用的指导文档有所不同。我们假设阅读者已经对 Git 和 Go 有基本的理解以及具备相关的基础知识。 除了这里所介绍的信息,Go 语言社区也维护了一份关...阅读全文

博文 2020-04-07 10:32:42 panjf2000

01Go命令介绍

Go 命令介绍 go 提供了一套强大好用的命令系统 go build 编译包和依赖项 go clean 删除目标文件 go env 打印Go环境信息 go fix 在包上运行go tool修复,用来修复老版本到新版本的问题 go fmt 在包源上运行gofmt go generate 通过处理源生成Go文件 go get 下载并安装包和依赖项 go install 编译和安装包和依赖项 go list 列出包 go run 编译并运行go程序 go test 测试包,运行以 _test.go结尾的文件 go tool 运行指定的go工具 go version 打印go版本 go vet 在包上运行工具go vet,它可以在编译阶段和运行阶段发现bug 详细的官网地址为:中文https://g...阅读全文

博文 2019-04-16 08:31:00 weixin_33978016

golang快速入门[2.2]-go语言开发环境配置-macOS

golang快速入门[2.2]-go语言开发环境配置-macOSmacos安装Go语言开发包配置go语言的开发环境的第一步是要在go官网下载页面下载开发包macOS需要下载pkg后缀文件macOS和iOS操作系统Apple软件包使用.pkg扩展名,在内部使用Xar格式Mac OS 的Go语言开发包是 .pkg 格式的,双击我们下载的安装包即可开始安装,一路点击“继续”即可。双击我们下载好的Go语言开发包即可启动安装程序,如下图所示,这是Go语言的用户许可协议,无需管它,直接勾选“I accept …”然后点击“Next”即可。安装包会默认安装在 /usr/local 目录下,如下所示。这个目录的结构遵守 GOPATH 规则,后面的章节会提到这个概念。目录中各个文件夹的含义如下表所示。目录名说...阅读全文

博文 2020-02-07 19:33:10 jonson_jackson

在递归生成json路径时所遇到的Slice append操作的问题

我们的需求是为根据json每一个value生成从root到key的path (为了方便说明我们暂时不考虑数组的情况,只考虑object/number/bool/string) 举个例子,对于以下json字符串 { "a": { "b":{ "c":{ "d0": "d0", "d1": "d1", "d2": "d2" } } } } 我们希望最终生成以下形式 a.b.c.d0 = d0 a.b.c.d1 = d1 a.b.c.d2 = d2 为此我们我们定义了以下结构 type Entry struct{ path []string val interface{} } 然后我们通过定义一个递归的函数来执行以下 func RecurseJson(jsonObj interface{}, pa...阅读全文

博文 2019-08-12 11:32:43 Destiny池鱼

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 有关的知识是很有必要的。 模式 Go Modules 在 Go 1.11 及 Go 1.12 中有三个模式,根据环境变量 GO111MODULE 定义: 默认模式(未设置该环境变量或 GO111MODULE=a...阅读全文

学习单元测试,告别祈祷式编程

祈祷式编程 祈祷式编程 如果代码中包含以下代码 或者上线后进行这种活动 那么这种编程方式就是祈祷式编程。 用流程图表示基本就是这个样子。 祈祷式编程有什么危害呢? 累,每次写完代码还需要再祈祷 不受控,代码运行结果主要看运气,大仙忙的时候可能保佑不了 解决这个问题有好多种方法,单元测试是其中之一。 单元测试 什么是单元测试 单元测试是由开发人员编写的,用于对软件基本单元进行测试的可执行的程序。单元(unit)是一个应用程序中最小的课测试部分。(比如一个函数,一个类 google 把测试分成小型测试、中型测试和大型测试。单元测试基本和小型测试的作用类似,但是通常也会使用mock或者stub 的方式模拟外部服务。 理想情况下,单元测试应该是相互独立、可自动化运行的。 目的: 通常用单元测试来验证...阅读全文

博文 2019-10-07 15:02:38 goodspeed

如何通过Dataworks禁止MaxCompute 子账号跨Project访问

摘要: 之前有很多DataWorks用户问MaxCompute访问权限问题,比如子账号为什么可以增删查别人在别的项目创建的表,即使这个子账号并没有加入那个项目 。 今天手把手教大家实现子账号授权并关闭跨Project的数据访问权限。 **原文链接:http://click.aliyun.com/m/43802/** 之前有很多DataWorks用户问MaxCompute访问权限问题,比如子账号为什么可以增删查别人在别的项目创建的表,即使这个子账号并没有加入那个项目 。 今天手把手教大家实现子账号授权并关闭跨Project的数据访问权限。 1、访问RAM控制,https://ram.console.aliyun.com/ ![图片描述](http:...阅读全文

1. 一文搞定Go语言开发环境的搭建

文章首发自公众号:Go编程时光 《Go编程时光》,一个能带你学习 Go 语言的专栏,同时欢迎搜索我的同名公众号【Go编程时光】(排版精美更适合阅读),第一时间获取Go语言干货。 1. 下载安装 Go语言 下载地址:golang.google.cn/dl/ 下载完成后,直接双击 msi 文件进行安装,我习惯将软件安装在我的 E 盘下的 Program Files 目录下 后面就是一路点击 Next 即可,直到出现如下界面,安装完成。 2. 配置 Goland 环境 学习编程语言,使用一个称心的 IDE,可以帮你省去很多麻烦。 开发 Python 项目,我习惯使用 PyCharm,因为已经习惯了 JetBrains 风格的IDE,可以替我省去很多熟悉新IDE的成本,所以这里我照样使用 JetBr...阅读全文

博文 2020-03-15 10:34:24 王一白

go 学习笔记之工作空间

搭建好 Go 的基本环境后,现在可以正式开始 Go 语言的学习之旅,初学时建议在默认的 GOPATH 工作空间规范编写代码,基本目录结构大概是这个样子. . |-- bin | `-- hello.exe |-- pkg | `-- windows_amd64 | `-- github.com | `-- snowdreams1006 | `-- learn-go | `-- strings.a `-- src `-- github.com `-- snowdreams1006 `-- learn-go |-- README.md |-- hello | `-- hello.go `-- strings |-- reverse.go `-- reverse_test.go Go 相关的代码保...阅读全文

博文 2019-08-02 17:32:39 雪之梦技术驿站

go 学习笔记之环境搭建

千里之行始于足下,开始 Go 语言学习之旅前,首先要搭建好本地开发环境,然后就可以放心大胆瞎折腾了. Go 的环境安装和其他语言安装没什么特别注意之处,下载安装包下一步下一步直到完成,可能唯一需要注意的就是 $GOPATH 环境变量的设置问题. 不过,简单起见,目前采用默认配置,等到比较熟悉 Go 语言时候再自定义设置也不迟,因此采用喜闻乐见的傻瓜式安装方式吧! Go 下载安装 由于众所周知的原因,谷歌被墙,因此 Go 的国外官网无法访问,好在已提供 Go 的中国官网可以正常访问. 国外官网: https://golang.org/ 国内官网: https://golang.google.cn/ Go 语言中文网: https://studygolang.com/ 除了官网下载,也可以从第三...阅读全文

博文 2019-08-01 17:32:45 雪之梦技术驿站

leetcode_9

Golang: 思路:因为题意希望不将整数转变为字符串,所以这里的步骤变成:先实现整数反转,然后再将反转后的整数与原先的整数对比 注意:其实这里应该注意反转后的整数会不会出现溢出,比如:2147483647反转为7463847412,但这里我测试了下,go好像不会出现溢出,所以我没有做这样的处理 func isPalindrome(x int) bool { target:=x temp:=0 if x<0 { return false } for{ if x!=0 { temp=temp*10+x%10 x=x/10 }else{ break } } if temp==target { return true }else { return false } ...阅读全文

博文 2020-01-11 06:32:51 淳属虚构

golang快速入门[2.3]-go语言开发环境配置-linux

golang快速入门[2.3]-go语言开发环境配置-linuxlinux安装Go语言开发包默认读者会使用linux的基本操作配置go语言的开发环境的第一步是要在go官网下载页面下载开发包linux需要下载tar.gz压缩文件这里我们下载的是 64 位的开发包,如果读者的电脑是 32 位系统或者有特殊的需求,则需要下载 32 位的开发包在上图所示页面中向下滚动即可找到 32 位开发包的下载地址,如下图所示注意,如果在ubuntu这样有图形化界面的linux操作系统,我们可以直接下载没有图形化界面时,我们需要在命令行中操作第一步:下载开发包>> wget https://dl.google.com/go/go1.13.7.linux-amd64.tar.gz --2020-02-06 14:1...阅读全文

博文 2020-02-07 19:33:11 jonson_jackson

Golang笔记-基准测试

上一篇写了些简单的单元测试,这一篇来看看go中的基准测试。在go中基准测试也是开箱即用的。使用testing.B结构对象。 需要测试的代码 我们依然用上一篇的代码结构 │ main.go │ main_test.go main.go func JoinStrUseSprint(a,b string) string { return fmt.Sprintf("%s%s",a,b) } func JoinStrUseNor(a,b string) string { return a+b } 创建一个基准测试 创建普通单元测试我们使用TestFunc来定义。创建基准测试我们需要使用BenchmarkFunc来定义。 func TestJoinStrUseNor(t *testing.T) { s ...阅读全文

博文 2020-05-21 22:32:42 旧梦发癫

如何0成本在github上构建CI

image 现代软件的研发流程基本上均会配备一定程度的CI/CD(这篇文章解释了为何需要在企业里实施CI/CD),整个流程主要分为CI和CD部分,这篇文章将围绕CI部分展开,并通过一个具体的例子解释如何0成本在github上构建CI。构建CI的最佳实践离不开Trunk Based Development的分支策略,感兴趣的读者可以通过这篇文章来了解什么是Trunk Based Development。在github上构建CI有2个好处:无需任何费用和有大量可以用于构建CI的模块,借助这2个好处,小规模团队可以快速地搭建还不错的CI流程。接下来,让我们结合一个使用Go编写的Hello World例子以及基于Trunk-Based Development模式来构建这个CI流程。 这篇文章将分为以...阅读全文

博文 2020-06-06 11:32:44 云端漫步_2cloudlab

GO学习笔记 - 命令行解析

本文主题:基于os.Args与flag实现Golang命令行解析。 小慢哥的原创文章,欢迎转载 目录 ▪ 一. os.Args▪ 二. flag▪ 三. 结合os.Args与flag实现子命令▪ 附. 参考文档 一. os.Args os.Args用于获取通过命令行传入的参数 ▷ os.Args[0]:程序执行路径▷ os.Args[1]:第1个参数▷ os.Args[2]:第2个参数▷ len(os.Args):参数数量 示例如下 package main import ( "fmt" "os" ) func main() { fmt.Println("Program:", os.Args[0]) for i, v := range os.Args[1:] { fmt.Printf("Ar...阅读全文

博文 2019-07-22 04:03:10 小慢哥

leetcode_52

Golang: 思路:和51是一个问题 注意:这里需要注意下:因为不想使用list去存储所有出现的结果(会导致空间复杂度变高),所以我使用了一个全局变量totalRes来表示单次测试的结果,但因为平台运行测试用例的机制,是会使用一段代码一次性跑多个测试用例。所以,每次运行totalNQueens这个方法时,都需要将totalRes置零,否则会报错。 不通过示例如上图 var totalRes int func main() { fmt.Println(totalNQueens(1)) } func totalNQueens(n int) int { totalRes=0 //这里每次使用都需要置零,否则会不通过 chessboard:=make([]int,n) placeQueen(che...阅读全文

博文 2020-01-26 20:32:40 淳属虚构

Go笔记1--安装

下载 到这https://golang.org/doc/install下载你所需的安装文件,接下来以linux为例子说明该安装过程。 我这里选择了go1.10.2.linux-amd64.tar.gz这个安装包。 安装 将下载的安装包解压到 /usr/local,命令如下 tar -C /usr/local -xzf go1.10.2.linux-amd64.tar.gz 配置环境变量 go.png 解压后会出现一个go文件夹,go文件夹下有一bin文件夹,接下来把/usr/local/go/bin添加到PATH 环境变量中。 添加 export PATH=$PATH:/usr/local/go/bin 到 /etc/profile 或者 $HOME/.profile 文件中。 接着执行如下...阅读全文

博文 2020-04-03 20:33:00 穷人黄六

使用shuttle实现bytom上跨链资产交换

最近基于比原链上的不同资产交换工具shuttle非常抢眼,因为该工具不仅可以实现同一条链上的不同资产进行交换,还可以实现不同区块链平台上的多种资产进行交换。该工具奠定了资产在交易的过程中完全去中心化,无第三方介入,保证了资产在交换过程中的安全性和原子性。那我们来看一下这个工具到底如何使用! 该工具主要的功能是实现不同资产在比原链上交换,首先是在比原链上不同资产进行交换。这个主要使用币币交换合约来进行资产的交换。如果是在比原的主侧链上进行跨链资产交换,则使用的是哈希时间锁合约来完成两条不同链上的资产交换。 下面我们来看一下操作的具体步骤: 第一步: 首先搭建节点环境 1.1 golang的版本高于1.12,同时设置好的$GOPATH环境目录 1.2 启动并配置好bytom节点,参考:bytom...阅读全文

博文 2019-09-26 21:32:56 aside section ._1OhGeD

Golang学习笔记-测试

Go的标准库提供了几个与测试有关的库,其中最主要的是testing包,testing包需要与go test命令以及源代码中所有以_test.go后缀结尾的测试文件一同使用,一般测试文件的名字都会与被测试源码文件的名字相对应,例如main.go的测试文件名为mian_test.go。 功能测试 为了测试源代码,我们需要在测试文件中创建具有以下格式的测试函数,其中Xxx首字符必须是大写的英文字母,在测试函数的内部,我们可以使用Error,Fail等一系列方法表示测试失败。 func TestXxx(t *testing.T){...} testing.T结构有几个非常有用的方法: Log():将给定的文本记录到日志。 Logf():根据给定的格式,将给定的文本记录到日志。 Fail():将测试函...阅读全文

博文 2019-12-29 14:32:39 土豆吞噬者