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

golang双链表的实现

双链表的实现 基本概念 每一个节点都存储上一个和下一个节点的指针 实现思路 创建一个节点结构体 每个节点都有上节点指针与下节点指针 每个节点都有一个key => value 创建一个链表结构体 链表容量大小属性 链表大小属性 链表锁, 实现并发安全 链表头节点 链表尾节点 实现链表操作方法 添加头部节点操作AppendHead 添加尾部节点操作AppendTail 追加尾部节点操作Append 插入任意节点操作Insert 删除任意节点操作Remove 删除头部节点操作RemoveHead 删除尾部节点操作RemoveTail 获取指定位置的节点Get 搜索任意节点Search 获取链表大小GetSize 打印所有节点操作Print 反转所有节点操作Reverse 总结 学好算法是一个不断积...阅读全文

博文 2019-08-12 11:32:44 百里

类似 Go 中的表格驱动测试的步骤驱动评估

如果你听说过表驱动测试,那你就能更容易理解本文所描述的概念,因为它们使用的是相同的技术,只不过本文使用在非测试场景中。 假设你有一个函数,该函数中调用了多个其他函数。那么这个函数很可能主要有两个作用: 1. 检查出现的所有错误返回。 2. 传递一个函数的输出作为另一个函数的输入。 ```go // process is an example pipeline-like function. func queryFile(filename, queryText string) (string, error) { data, err := readData(filename) if err != nil { return nil, errors.Errorf("read data: %v", er...阅读全文

博文 2019-12-11 17:03:26 yangzhenxiong

Go项目简单接入travis ci

上一篇文章提到了npm的接入 travis 实现自动发布 npm 包的方法,本文主要讲述 Go 项目的使用,主要分为执行单元测试和 build 打包发步到 github release。具体 travis 的基本操作参考上文即可,本文只讲述不同的部分 单元测试 本文不讲述 Go 的单元测试如何编写,这里直接以filenamify(一个合法化文件路径的库)为例子。已为filenamify.go编写测试文件filenamify_test.go。只需要在tracis中执行go test -v即可。 # https://github.com/flytam/filenamify/blob/master/.travis.yml language: go go: - 1.13.x env: - GO111...阅读全文

博文 2020-03-22 12:34:19 flytam

264-ugly-number-ii

https://github.com/wangcy6/leetcode/blob/master/c%2B%2B/264.UglyNumberII.cpp 题目 ugly-number-ii 编写一个程序,找出第 n 个丑数。 丑数就是只包含质因数 2, 3, 5 的正整数。 Write a program to find the n-th ugly number. Ugly numbers are positive numbers whose prime factors only include 2, 3, 5. Example: Input: n = 10 Output: 12 Explanation: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 is the seque...阅读全文

博文 2019-03-27 19:35:01 寒号鸟fly

Go语言基础(三)—— 面向对象编程

前言: 本专题用于记录自己(647)在Go语言方向的学习和积累。 系列内容比较偏基础,推荐给想要入门Go语言开发者们阅读。 目录如下: Go语言基础(一)—— 简介、环境配置、HelloWorld Go语言基础(二)—— 基本常用语法 Go语言基础(三)—— 面向对象编程 Go语言基础(四)—— 优质的容错处理 Go语言基础(五)—— 并发编程 Go语言基础(六)—— 测试、反射、Unsafe Go语言基础(七)—— 架构 & 常见任务 Go语言基础(八)—— 性能调优 本篇将介绍如下内容: 1.Go是面向对象的语言么? 2.结构体与行为(方法)的定义 3.接口(协议) 我们先来看个引子:“Is Go an object-oriented language?” 在Go的官方论坛里有世界各地的...阅读全文

博文 2020-02-03 10:34:16 奇舞647

golang[42]-区块链-go实战比特币默克尔树

go实战比特币默克尔树123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114package mainimport ( "crypto/sha256" "encoding/hex" "fmt")func min(a int,b int) int{ if(a>b){ return b } ...阅读全文

博文 2018-12-14 00:35:13 jonson_jackson

Golang学习笔记-环境搭建指南

最近一直在研究Docker和Kubernetes,这两者都是使用Go语言开发,为了更深入的了解Docker和Kubernetes,打算学习一下Go语言。 为了深入细致的学习,这里列一个目录,会不断更新 Golang学习笔记-环境搭建指南(本篇) Golang学习笔记-IDE选择和安装指南 持续更新,未完待续…… Go 语言支持以下系统: Linux FreeBSD Mac OS X(Darwin) Windows 官方网站为https://golang.org/,可惜因为GFW的原因打不开。不过我们可以通过这个网站https://golang.google.cn/访问。 下载安装包   首先进到下载页面 download page 笔者使用的是Windows操作系统,所以我下载的是 go1....阅读全文

博文 2018-09-03 17:34:59 Statmoon

zero down-time update服务的方案

从问题开始 先来抛一块砖,对于静态编译的应用程序,比如用C、C++、Golang或者其它的语言编写的程序,如果我们修改一个BUG或者添加一个新的特性后,如何在服务不下线的情况下更远应用程序呢?抛出了一个问题,一个很平常的问题,有人对问题思考比较透彻,比如牛顿,被苹果砸中了之后,引起了很多的思考,最后发现了万有引力定律。 如果你被苹果砸中了怎么办? 玩笑话一句,那我们如果被苹果砸中了会不死变成智障呢? 那么我们回到刚才这个问题 :当我们修复BUG,添加新的需求后,如何如丝般顺滑地升级服务器应用程序,而不会中断服务?这个问题意味着:C / C++ / GO都是静态语言,所有的指令都编译在可执行文件,升级就意味着编译新的执行文件替换旧的执行文件,已经运行的进程如何加载新的image(可执行程序文件...阅读全文

博文 2019-07-02 21:32:44 Yt_cc

unit test code coverage of Golang

go由google在2009年11月发布,目前版本是1.11 。 开发环境配置 下载go安装程序 下载地址:https://golang.org/dl/,默认路径安装 下载后直接双击msi文件安装,默认安装在c:\go 安装完成后默认会在环境变量 Path 后添加 Go 安装目录下的 bin 目录 C:\Go\bin\,并添加环境变量 GOROOT,值为 Go 安装根目录 C:\Go\ 验证是否安装成功,在运行中输入 cmd 打开命令行工具,在提示符下输入 go 设置工作空间gopath目录, 也即开发的项目路径。Windows环境下,新建一个环境变量名称叫做GOPATH,值就是你的工作目录,例如GOPATH=e:\mygo %GOPATH% 目录约定有三个子目录: -- src 存放源代码...阅读全文

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

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

博文 2019-10-07 16:34:22 goodspeed

一个TCP长连接设备管理后台工程(二)

后端模型 graph BT A(终端A) --> TCPServer B(终端B) --> TCPServer C(终端C) --> TCPServer TCPServer --> Postgresql Postgresql --> HTTPServer HTTPServer --> D(ClientA) HTTPServer --> E(ClientB) HTTPServer --> F(ClientC) 后端需要设计两个服务器,一个TCP,一个HTTP。TCP主要处理与终端的长连接交互,一个TCP连接对应一台终端设备,终端设备唯一标识使用IMEI。HTTP处理与前端的交互,前端需要获取所有可用的终端设备列表,向指定的终端发送命令。所以,为了方便从ip找到对应终端,然后从对应终端找到对应的...阅读全文

博文 2019-12-24 14:32:42 qiuzhiqian

基于consul构建golang系统分布式服务发现机制

文地址-石匠的Blog: http://www.bugclosed.com/post/5 在分布式架构中,服务治理是一个重要的问题。在没有服务治理的分布式集群中,各个服务之间通过手工或者配置的方式进行服务关系管理,遇到服务关系变化或者增加服务的时候,人肉配置极其麻烦且容易出错。 之前在一个C/C++项目中,采用ZooKeeper进行服务治理,可以很好的维护服务之间的关系,但是使用起来较为麻烦。现在越来越多新的项目采用consul进行服务治理,各方面的评价都优于ZooKeeper,经过几天的研究,这里做一个总结。 zookeeper和consul比较 开发语言方面,zookeeper采用java开发,安装的时候需要部署java环境;consul采用golang开发,所有依赖都编译到了可执行程序...阅读全文

博文 2018-07-26 14:30:00 williamjie

Golang笔记-单元测试test初探

为什么需要单元测试 其实在很长一段时间,包括现在,我都很不喜欢写单元测试。因为维护单元测试的成本很高。只有接口做了一点变更,那么单元测试就必须做相同的变更,否则会导致测试不通过。 那么反过来,只要每次在提交代码都去运行一次单元测试。这样可以很快的检查到你对代码更改是否影响了正常的业务逻辑,当然很大一部分是可能是别人写的那部分代码。因为你不确定本次的修改是否会影响到别人的那部分。所以单元测试还是很有必要的。 单元测试最基本的应用 go语言中单元测试是开箱即用的,官方提供了test包。不用像PHP中需要单独配置unit。 go test 最基本使用 go test 命令是golang单元测试的最基本使用 go test -v go test -v是我们比较常用的一个测试命令,用于执行测试,并打印...阅读全文

博文 2020-05-16 22:32:44 旧梦发癫

Rust学习笔记9 测试与评测

github地址:https://github.com/bradyjoestar/rustnotes pdf下载链接:https://github.com/bradyjoestar/rustnotes/blob/master/Rust%E8%AF%AD%E8%A8%80%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0.pdf 参考: https://rustcc.gitbooks.io/rustprimer/content/ 《RustPrimer》 https://kaisery.github.io/trpl-zh-cn/ 《Rust程序设计语言-简体中文版》 第九章 测试与评测 在rust中内部构建了测试和评测模块,虽然目前bench模块仍然在nightly ch...阅读全文

博文 2019-07-08 14:32:52 bradyjoestar

Go Web 编程之 响应

概述 上一篇文章中,我们介绍了请求的结构与处理。本文将详细介绍如何响应客户端的请求。其实在前面几篇文章中,我们已经使用过响应的功能——通过http.ResponseWriter发送字符串给客户端。 但是这种方式仅限于发送字符串。本文我们将介绍如何定制响应的参数。 ResponseWriter接口 如果你看了我前面几篇文章,应该对处理器和处理器函数都非常熟悉了。处理器函数即拥有以下签名的函数: func (w http.ResponseWriter, r *http.Request) 复制代码这里的ResponseWriter其实是定义在net/http包中的一个接口: // src/net/http/ type ReponseWriter interface { Header() Heade...阅读全文

博文 2019-12-23 11:34:21 darjun

Go学习笔记一(实用的基础概念)

引言 自己对学习go语言的心得进行个记录,方便未来复习。也见证自己的一个学习过程 应用程序⼊⼝ 必须是 main 包:package main 必须是 main 方法:func main() ⽂件名不一定是 main.go main函数的传参和返回 main 函数不不⽀支持传⼊入参数,在程序中直接通过 os.Args 获取命令⾏行行参数。 Go 中 main 函数不不⽀支持任何返回值,通过 os.Exit 来返回状态。 func main() { if len(os.Args) > 1 { fmt.Println("Hello World", os.Args[1]) os.Exit(11) } } 在终端go run文件,在后面带上参数即可,下面是打印的结果 打印的结果 编写测试程序 源码⽂...阅读全文

博文 2019-07-10 09:02:39 Jabir2HLJ

《Go语言四十二章经》第二十七章 反射(reflect)

《Go语言四十二章经》第二十七章 反射(reflect) 作者:李骁 ## 27.1 反射(reflect) 反射是用程序检查其所拥有的结构,尤其是类型的一种能力;这是元编程的一种形式。 反射可以在运行时检查类型和变量,例如它的大小、方法和 动态 的调用这些方法。这对于没有源代码的包尤其有用。 这是一个强大的工具,除非真得有必要,否则应当避免使用或小心使用。 变量的最基本信息就是类型和值。反射包的 Type 用来表示一个 Go 类型,反射包的 Value 为 Go 值提供了反射接口。 两个简单的函数,reflect.TypeOf 和 reflect.ValueOf,返回被检查对象的类型和值。 例如,x 被定义为:var x float64 = 3.4,那么 reflect.TypeOf(x)...阅读全文

博文 2018-10-12 20:36:21 roteman

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-01-03 23:35:14 wz669

Spring 中获取 request 的几种方法,及其线程安全性分析

概述在使用Spring MVC开发Web系统时,经常需要在处理请求时使用request对象,比如获取客户端ip地址、请求的url、header中的属性(如cookie、授权信息)、body中的数据等。由于在Spring MVC中,处理请求的Controller、Service等对象都是单例的,因此获取request对象时最需要注意的问题,便是request对象是否是线程安全的:当有大量并发请求时,能否保证不同请求/线程中使用不同的request对象。 这里还有一个问题需要注意:前面所说的“在处理请求时”使用request对象,究竟是在哪里使用呢?考虑到获取request对象的方法有微小的不同,大体可以分为两类:(1)在Spring的Bean中使用request对象:既包括Controller...阅读全文

博文 2019-02-21 18:34:41 MyBatis

【干货分享】大数据开发套件DataIDE使用教程

课程介绍 大数据开发套件(Data IDE) 是阿里云数加重要的Paas平台产品,是”DataWorks”中最重要的核心组件。提供全面托管的工作流服务,一站式开发管理的界面,帮助企业专注于数据价值的挖掘和探索。 大数据开发套件(Data IDE) 基于MaxCompute作为核心的计算、存储引擎,提供了海量数据的离线加工分析、数据挖掘的能力。您可以参见 MaxCompute 简介来对其进行深入了解 。 使用大数据开发套件(Data IDE),可对数据进行数据传输、数据转换等相关操作,从不同的数据存储引入数据,对数据进行转化处理,最后将数据提取到其他数据系统。 产品详情:https://data.aliyun.com/product/ide 课时列表 • 课...阅读全文

golang tips(踩过的坑)

自动化测试goconvey中So()与ShouldBeXXX的区别So(actual, action, expect)会对比实际值与期待值行为是否匹配,如果不匹配会触发t.Fail(), console可以显示fail的原因ShouldBeXXX 的返回结果为string,可以看到shouldBeXXX不会触发程序异常,如果actual与expect不匹配只是返回""或者不匹配原因...阅读全文

博文 2019-07-02 18:32:47 fireagain

2019-07-25

北京 天气晴 开发需求 上午主要是继续做昨下午接的需求。单元测试的时候碰到许多问题的,执行单个测试文件的时候提示很多引用包下其他文件的变量undefined,执行包下所有测试文件的时候又说prinf format有一大堆错误。无论是在docker容器的bash还是在build脚本里写都是这种情况。然后问题解决了,差不多搞了一上午,记录了以下两篇笔记: go test单元测试变量undefined错误 golang报printf format错误 哥哥帮我review之后还是发现了很多错误的。输出日志的时候用format形式忘记:%s两次!而且判断err已经为nil的时候其后的日志就不用带err了!还有就是之前调的外部api返回的值是毫米级别的时间戳,但我从数据库查完之后直接.Unix()的,...阅读全文

博文 2019-07-26 01:32:42 一叶舟遥

Go Web 编程--应用 ORM

上篇文章中我们在使用的开发环境中增加了MySQL容器,然后介绍了使用database/sql标准库结合数据库驱动包进行数据库操作的方法。不过它们是相对偏底层的软件包。实际开发经常会使用一些在它的基础上封装的 ORM库。ORM的查询使用起来更简单些,语法更富表达力。这篇文章我们主要探究下面这些内容。 gorm的基本用法 如何管理ORM的使用 如何合理规划项目目录结构 安装gorm包 gorm是一个出色的,对开发人员友好的 Golang ORM 库,其支持的特性包括: 全特性 ORM (几乎包含所有特性) 模型关联 (一对一, 一对多,一对多(反向), 多对多, 多态关联) 钩子 (Before/After Create/Save/Update/Delete/Find) 预加载 事务 复合主键 ...阅读全文

博文 2020-02-16 09:32:38 Kevin

PHP编码gzdeflate与Golang解码DEFLATE

8月7日@黄同学找我问:“数据存到redis是gzdeflate压缩过的数据,golang从redis取出来,解压缩失败”。很多从PHP转Golang的业务经常会遇到,所以写下这篇博文,希望可以帮助更多人。想要使用golang解码php的编码,那么就应该需要知道gzdeflate函数的算法是什么,先到gzdeflate文档,查看了一下发现:gzdeflate使用的是纯粹的DEFLATE格式。这就与golang的compress/flate包一致了。有了了解就可以看着golang文档实现代码了。遂与@黄同学同学写了几个函数进行验证,最后定稿如下:package main import ( "strings" "fmt" "compress/flate" "bytes" "io/ioutil" ...阅读全文

博文 2018-07-02 12:21:44 梦朝思夕

《Go语言四十二章经》第二十六章 测试

《Go语言四十二章经》第二十六章 测试 作者:李骁 ## 26.1 单元测试 首先所有的包都应该有一定的必要文档,然后同样重要的是对包的测试。 名为 testing 的包被专门用来进行自动化测试,日志和错误报告。并且还包含一些基准测试函数的功能。 对一个包做(单元)测试,需要写一些可以频繁(每次更新后)执行的小块测试单元来检查代码的正确性。于是我们必须写一些 Go 源文件来测试代码。测试程序必须属于被测试的包,并且文件名满足这种形式 *_test.Go,所以测试代码和包中的业务代码是分开的。 _test 程序不会被普通的 Go 编译器编译,所以当放应用部署到生产环境时它们不会被部署;只有 Gotest 会编译所有的程序:普通程序和测试程序。 测试文件中必须导入 "testing" 包,并写一...阅读全文

博文 2018-10-12 20:31:45 roteman

想小步快跑吗?来一份持续集成流水线套餐吧

前言 随着云计算的不断成熟,人们已经意识到计算机自动化带来的优势,因此传统工业中越来越多的工作逐渐交由软件控制。软件研发组织更应该转变生产方式,将重复的低成本的人工处理转变为软件自动处理。 《Google软件测试之道》中说道:“每天,Google都要测试和发布数百万个源文件,亿万行代码。数以亿计的构建动作会触发几百万次的自动化测试,并在好几十万个浏览器实例上执行。面对这些看似不可能完成的任务,谷歌是如何测试的呢?” 我们在平时的工作中,总有一部分工作是相对机械化的,易出错的,例如一次又一次的打包部署应用。如果可以把这部分工作交给机器来做,我们仅需要轻轻地点一下鼠标,再泡杯咖啡就能让自己轻松地完成工作,岂不是美滋滋? 此时,我们就可以考虑引入自动化持续集成工具。一套连贯的工作流程和流水线可以大...阅读全文

博文 2019-06-17 10:02:46 Iris女战士

go语法快速入门

第一个程序HelloWorld 按照国际惯例,我们来实现helloworld package main import "fmt" func main() { fmt.Println("Hello,World") } package main标注程序位置 import "fmt"导入fmt包,类似python,包名需要使用""圈起,如果引入的包太多,考虑使用import() import ( "fmt" "time" "os" ) func main定义函数名为main的函数,接着在函数里面使用fmt.Println函数输出“hello,world” 变量和常量 在golang中,定义一个变量可以使用var语法 var name type = value 如果是在函数体内,你还可以使用更加简洁...阅读全文

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

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

博文 2019-06-30 22:32:43 thinkeridea

GoLang - 数组(Array)

GoLang 提供了数组类型的数据结构。数组是 GoLang 编程中最常用的数据结构之一,指同一类型数据的有序集合。数组中包含的每个数据称为元素,一个数组包含的元素总数称为数组的长度。   GoLang 中的数组具有以下特点: 固定性——长度固定,无法扩容。 有序性——所有元素都有固定的整数下标(编号),第一个元素的下标为 0 。 数组声明   GoLang 中声明数组的语法如下: var variable_name [SIZE] variable_type   以上为一维数组的定义方式。   例如以下定义了长度为 10 ,类型为 float32 的数组 nums : var nums [10] float32   常用的多维数组可以这样定义: var variable_name [SIZE...阅读全文

博文 2019-07-24 10:32:57 凉丶心园

37.笔记go语言——包

37.笔记go语言——包 包是函数和数据的集合。用package保留字定义一个包。文件名不需要与包名一致。包名的约定是使用小写字符。Go包可以由多个文件组成,但是使用相同的package 这一行。让我们在文件even.go中定义一个叫做even的包。 名称以大写字母起始的是可导出的,可以在包的外部调用. 在Go中,当函数的首字母大写的时候,函数会被从包中导出(在包外部可见,或者说公有的) 概括来说: •公有函数的名字以大写字母开头; •私有函数的名字以小写字母开头。 这个规则同样适用于定义在包中的其他名字(新类型、全局变量)。注意,“大写”的含义并不仅限于US ASCII,它被扩展到了整个Unicode范围。所以大写的希腊语、古埃及语都是可以的。 标识符 像在其他语言中一样,Go...阅读全文

博文 2017-10-27 13:01:02 notbaron

golang学习笔记

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fangyuanqi/article/details/81047336 概述 类型检查:编译时 运行环境:编译成机器代码直接运行 编程范式:面向接口,函数式编程,并发编程 Go语言并发编程 采用CSP(Communication Sequential Process)模式 不需要锁,不需要callback 并发编程vs并行计算 变量定义 使用var定义变量 var a,b,c, bool var s1,s2 string = “hello”, “world” 可放在函数内,或直接放在包内 使用var()集中定义变量 让编译器自动决定类型 var a, b, i, s1, s2 = true, f...阅读全文

博文 2019-01-04 21:31:34 fangyuanqi

如何正确的开始用 Go 编程

本文会演示简单的Go软件包的开发过程,并介绍了go命令行工具,这是我们获取,构建和安装Go软件包和命令的标准方法。go工具要求你以特定方式组织代码。我们会介绍Go安装启动和运行的最简单方法,一定要仔细阅读啊。组织代码结构概要Go 程序员一般会将他们的源代码存放在一个工作区中(多个项目放在一个工作区)工作区中包含许多由 git 管理的代码仓库(也可以是其他版本控制工具管理的)每个代码仓库包含一个或者多个 Go package每个 package 由单一目录下的一个或多个Go 源码文件组成package 的目录路径决定了其导入路径与其他编程语言不同的是,在其他编程语言里每个项目都有自己的工作区,并且工作区都与版本控制系统紧密相关。工作区工作区是一个目录层级,这个目录层级在顶层有两个目录:src目...阅读全文

博文 2020-02-28 21:33:02 Java天天

一些不常见的Go命令参数详解

你是刚开始使用Go工具么?或者你想扩展知识?这篇文章将会描述每个人都需要知道的Go工具参数。免责声明:这篇文章可能会有些偏见。这篇文章描述了我个人会用到的Go工具参数,还有一些是我周围的人遇到的问题。如果你还有别的想法,在Twitter联系我。$ go build -x-x会列出来go build调用到的所有命令。如果你对Go的工具链好奇,或者使用了一个跨C编译器,并且想知道调用外部编译器用到的具体参数,或者怀疑链接器有bug;使用-x来查看所有调用。$ go build -x WORK=/var/folders/00/1b8h8000h01000cxqpysvccm005d21/T/go-build600909754 mkdir -p $WORK/hello/perf/_obj/ mkdi...阅读全文

博文 2018-01-06 15:57:07 erlib

【Zinx第二章-初识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-03 11:32:44 aceld

leetcode_32

Golang: 思路:动态规划,这题用二维数组也可以解,但不能通过所有测试用例,所以要用一维的 代码如下: func longestValidParentheses(s string) int { res:=0 arr:=make([]int,len(s)) for i:=0;i=0 { if s[i-1]=='(' { if i-2>=0 { arr[i]=arr[i-2]+2 }else{ arr[i]=2 } }else{ if i-arr[i-1]-1>=0&&arr[i-1]>0&&s[i-arr[i-1]-1]=='('{ if i-arr[i-1]-2>=0{ arr[i]=arr[i-1]+2+arr[i-a...阅读全文

博文 2020-03-08 17:32:44 淳属虚构

go语言开发必备

1、go path问题 不是每个项目都来一个go path,go path是所有项目共享的 go path是包搜索路径的根 2、单向依赖 不允许出现出现循环依赖,类似c/c++中的循环包含 3、包的导入问题 目录的层次用'/'来连接,不是用'.'(python) import '_' package_with_path ———— 前缀触发package中的init方法调用 import '.' package_with_path ———— 前缀触发package中的所有的全局变量在当前环境全部可见,类似import * import 'e' package_with_path ——----- 前缀触发package的重名名 4、类型强制转换 相似类型的转换可以类比c/c++中的使用习惯 如i...阅读全文

博文 2019-01-17 03:32:40 zeus_abc

阿里云按量付费服务器变配功能介绍 实时变配按量付费云服务器

摘要: 按量付费的实例类型可以充分的满足业务系统的弹性需求,通过弹性的变配随时创建和释放资源应对业务的洪峰压力或者测试需求。在实际使用过程中,为了充分的满足弹性的需求,我们开放了按量服务器的变配API,您可以按需对实例进行升配和降配。 按量付费的实例类型可以充分的满足业务系统的弹性需求,通过弹性的变配随时创建和释放资源应对业务的洪峰压力或者测试需求。在实际使用过程中,为了充分的满足弹性的需求,我们开放了按量服务器的变配API,您可以按需对实例进行升配和降配。您可以通过ModifyInstanceSpec来实现资源变配。 目前支持变配的内容为实例规格和实例的带宽大小。对于变配有下面的限制. 变更实例类型 对实例类型进行变更,在变更后付费类型实例的实例类型的时候,目前有下面的...阅读全文

值得期待:Go对WebAssmbly的完全支持

版权声明:本文为博主John Lau原创文章,未经博主允许不得转载 https://blog.csdn.net/GreatElite/article/details/78855667 WebAssembly获得了所有浏览器的一致支持, Chrome 和 Firefox 已经原生支持 WebAssembly,Edge 和 Safari 也在预览版中加入了 WebAssembly 支持。 Go很快也会对WebAssembly进行支持,目前还处理开发阶段。社区已经有对应的指导文档,下面就是社区的部分指导步骤。 ” Compiling Go code to wasm is also doable, but the support for this backend hasn’t been yet in...阅读全文

博文 2018-12-06 19:31:03 john_f_lau

learn go with tests 学习笔记(一) hello world

引言 终于开始学习golang细节了,此系列笔记旨在记录学习路上遇到的一些坑,还有一些感觉需要特别注意的知识点 环境准备 IDE:goland go version: go version go1.14.1 darwin/amd64 遇到问题 (一)运行 go test 报错 go: cannot find main module; see 'go help modules' 问题分析:其根本原因是我使用了go mod进行依赖管理,然而使用项目根目录没有go.mod文件 解决办法:添加go.mod 文件,方法有二 (1)在目录中运行 go mod init (2)如果使用的是goland ide,可以通过配置完成 https://goproxy.io,direct 知识点 (一)如何编写单元...阅读全文

博文 2020-05-23 09:32:56 硌手小石头

golang包package

含义 包是函数和数据的集合。用 package 关键字定义一个包。文件名不需要与包名一致。包名的约定是使用小写字符。 Go 包可以由多个文件组成,但是使用相同的package 这一行。 package even //开始自定义的包 func Even(i int) bool { //可导出函数 return i % 2 == 0 } func odd(i int) bool { //私有函数 return i % 2 == 1 } 名称以大写字母起始的是可导出的,可以在包的外部调用。 概括来说: * 公有函数的名字以大写字母开头 * 私有函数的名字以小写字母开头 这个规则同样适用于定义在包中的其他名字(新类型、全局变量)。注意, “大写” 的含义并不仅限于 US ASCII,它...阅读全文

博文 2019-12-31 14:32:49 程序小白菜

Go map 的特殊特性

零值特性 未初始化的map某些操作是合法的: var testMap map[int]int size := len(testMap) // size is 0 _, present := testMap[0] // present is false non := testMap[123] // non is 0, won't case panic testMap[1] = non // panic: assignment to entry in nil map 只有写入操作才会出 panic。 临时迭代obj的地址问题。 迭代 map 和 slice 等容器的时候,不可使用临时变量的地址!简单的说,这个obj使用的是同一个地址,如果将此变量的地址保存起来,那么将是一个灾难。 代码片段: v...阅读全文

博文 2019-09-03 17:02:44 秦川

EOSIO Dawn 4.0 发布

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 关于Dawn 4.0 RAM分配的反馈一些社区成员表示担心,在其他任何人发现之前,有些人会通过购买便宜的内存来获得不合理的利润。为了缓解这种情况,我们建议那些人用一个非常有限的RAM供应来启动一个节点,然后在头几个月内逐步增加内存。如果RAM的供应量从32GB开始,然后在几个月内增长到1TB,那么RAM的价格可能会随着时间的推移而迅速下降到最初定价的3%。只有那些真正需要RAM或者在出价时考虑未来RAM供应的人才会购买初始RAM。无论哪种方式,没有人会获得“便宜”的RAM或“免费利润”。 测试网络状态我们在欧洲,亚洲和美国拥有节点的内部测试网络一直运行良好,没有出现重大问题。 主观CPU资源使用率在过去的几个月中...阅读全文

博文 2019-09-16 11:02:51 链客

Golang 测试

前言 关于 Go 测试,我们应该知道测试方式(或者说测试手段)、测试对象及测试原因。 How 测试方式 测试实现 举个例子。针对字符串分割函数(如下),实现单元测试。 package goTest import "strings" // Split slices s into all substrings separated by sep and // returns a slice of the substrings between those separators. func Split(s, sep string) []string { var result []string i := strings.Index(s, sep) for i > -1 { result = append...阅读全文

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 ...阅读全文

博文 2020-05-21 21:48:39 rundaisc

golang 测试

参考《Go语言圣经》P395 一、概述 go test命令是一个按照一定的约定和组织的测试代码的驱动程序。在包目录内,所有以_test.go为后缀名的源文件并不是go build构建包的一部分,它们是go test测试的一部分。在*_test.go文件中,有三种类型的函数:测试函数、基准测试函数、示例函数。 1.一个测试函数是以Test为函数名前缀的函数,用于测试程序的一些逻辑行为是否正确;go test命令会调用这些测试函数并报告测试结果是PASS或FAIL。 2.基准测试函数是以Benchmark为函数名前缀的函数,它们用于衡量一些函数的性能;go test命令会多次运行基准函数以计算一个平均的执行时间。 3.示例函数是以Example为函数名前缀的函数,提供一个由编译器保证正确性的示例...阅读全文

博文 2019-03-11 17:34:43 懒皮

Go 中 slice 的 In 功能实现探索

之前在知乎看到一个问题:为什么 Golang 没有像 Python 中 in 一样的功能?于是,搜了下这个问题,发现还是有不少人有这样的疑问。 今天来谈谈这个话题。如果觉得本文有帮助,帮忙给个赞,谢谢! in 是一个很常用的功能,有些语言中可能也称为 contains,虽然不同语言的表示不同,但基本都是有的。不过可惜的是,Go 却没有,它即没有提供类似 Python 操作符 in,也没有像其他语言那样提供这样的标准库函数,如 PHP 中 in_array。 Go 的哲学是追求少即是多。我想或许 Go 团队觉得这是一个实现起来不足为道的功能吧。 为何说微不足道?如果要自己实现,又该如何做呢? 我所想到的有三种实现方式,一是遍历,二是 sort 的二分查找,三是 map 的 key 索引。 本文...阅读全文

博文 2019-09-15 11:32:42 波罗学

【Go】高效截取字符串的一些思考

文链接:blog.thinkeridea.com/201910/go/e… 最近我在 Go Forum 中发现了 [SOLVED] String size of 20 character 的问题,“hollowaykeanho” 给出了相关的答案,而我从中发现了截取字符串的方案并非最理想的方法,因此做了一系列实验并获得高效截取字符串的方法,这篇文章将逐步讲解我实践的过程。 字节切片截取 这正是 “hollowaykeanho” 给出的第一个方案,我想也是很多人想到的第一个方案,利用 go 的内置切片语法截取字符串: s := "abcdef" fmt.Println(s[1:4]) 复制代码我们很快就了解到这是按字节截取,在处理 ASCII 单字节字符串截取,没有什么比这更完美的方案了,中文...阅读全文

博文 2019-10-31 16:34:27 thinkeridea

Go 中 slice 的 In 功能实现探索

之前在知乎看到一个问题:为什么 Golang 没有像 Python 中 in 一样的功能?于是,搜了下这个问题,发现还是有不少人有这样的疑问。 今天来谈谈这个话题。 in 是一个很常用的功能,有些语言中可能也称为 contains,虽然不同语言的表示不同,但基本都是有的。不过可惜的是,Go 却没有,它即没有提供类似 Python 操作符 in,也没有像其他语言那样提供这样的标准库函数,如 PHP 中 in_array。 Go 的哲学是追求少即是多。我想或许 Go 团队觉得这是一个实现起来不足为道的功能吧。 为何说微不足道?如果要自己实现,又该如何做呢? 我所想到的有三种实现方式,一是遍历,二是 sort 的二分查找,三是 map 的 key 索引。 本文相关源码已经上传在我的 github ...阅读全文

博文 2019-09-14 21:04:17 波罗学