go学习笔记(二):工作区

上篇文章介绍了go语言开发环境的搭建,本文介绍一下go语言的工作区。在go语言的环境搭建过程中,需要了解3个环境变量: 1)GOROOT:go语言安装的根目录,上篇文章中:D:\Program Files\go 2)GOPATH:自己定义的工作空间 3)GOBIN:生成的可执行文件的路径 GOPATH是最复杂的一个环境变量。GOPATH是多个工作区的目录路径。这些路径存放go语言的源码文件、归档文件和编译后的可执行文件。要理解这个概念,就需要理解下面的3个知识: 1.源码组织方式 同java类似...阅读全文

51CTO博客 2021-01-26 20:07:08 mb5fed72b60246f

go语言开发环境搭建

最近开始接触go语言,先搭建一套开发环境。 1.进入go官方网站,https://golang.org/,国内有些网络可能不能访问,如果打不开,访问go语言中文网https://studygolang.com/dl 我的开发环境是windows,下载windows安装包,如下图所示: 2.软件100多M,下载完成后直接打开。 点击next选择I accept ...,继续点击next,我选择安装在D盘, 继续点击next,点击Install, 等待几分钟,最后点击Finish,完成。 3.打开I...阅读全文

51CTO博客 2021-01-26 19:46:49 mb5fed72b60246f

吐血规劝!程序员防猝死终极指南

快过年了,跟我可爱的小侄子通了个电话,上来就说,“叔叔你头发怎么变少了”,我很痛心,我的小侄子,年纪轻轻的,眼神已经这么不好使了。但转念一想,这也是他对我的一种关心,作为叔叔,也该回应一把,今年过年给他带一本《少儿编程》回去当礼物吧。 但转念又一想,也许我真的头发变少了呢,我强壮的体魄不再足以支撑我肮脏的灵魂了呢,或许真的应了那句古语,程序员固有一死,要么骚死,要么猝死? 我好残忍,我竟然想让我的小侄走上这么一条不归路。 可是我这一身编程本领好想传授予人,我还想不想那么快一"猝"而就。我还想看着...阅读全文

简书 2021-01-26 14:39:24 黑羽_692867294

golang 架构设计原则 单一职责原则

golang 架构设计原则 单一职责原则 缘起 最近复习设计模式 拜读谭勇德的<<设计模式就该这样学>> 该书以java语言演绎了常见设计模式 本系列笔记拟采用golang练习之 单一职责原则 单一职责原则(Simple Responsibility Principle, SRP)指不要存在一个以上导致类变更的原因。假设有一个Class负责两个职责,一旦发生需求变更,修改其中一个职责的逻辑代码,有可能会导致另一个职责的功能发生故障。 分别用两个Class来实现两个职责,进行解耦。总体来说就是一个...阅读全文

golang 架构设计原则 依赖倒置原则

golang 架构设计原则 依赖倒置原则 缘起 最近复习设计模式 拜读谭勇德的<<设计模式就该这样学>> 该书以java语言演绎了常见设计模式 本系列笔记拟采用golang练习之 依赖倒置原则 依赖倒置原则(Dependence Inversion Principle, DIP)指设计代码结构时,高层模块不应该依赖底层模块,二者都应该依赖其抽象。 抽象不应该依赖细节,细节应该依赖抽象。 常见的依赖注入方式有: 方法参数注入, 构造器参数注入, setter方法注入 _ 场景 线上学校有一系列课程...阅读全文

企业项目迁移go-zero全攻略(二)

承接上篇:上篇文章讲到 go-zero 架构设计和项目设计。本篇文章接着这个项目设计,将生成的 app 模块 中 gateway 和 RPC 进行改造。废话不多说,让我们开始!gateway servicegateway 中我做了一些自定义,在端请求我们后台接口情况下,虽然多数情况是不需要关心错误码的,但是避免不了要某些场景还是需要根据固定错误码去做特殊处理,我自己定义了一个错误类,这个错误类只在 gateway 中使用:err.go:package xerr import "fmt" type...阅读全文

51CTO博客 2021-01-26 10:45:49 mb600beaa63f802

企业项目迁移go-zero全攻略(二)

承接上篇:上篇文章讲到 go-zero 架构设计和项目设计。本篇文章接着这个项目设计,将生成的 app 模块 中 gateway 和 RPC 进行改造。废话不多说,让我们开始!gateway servicegateway 中我做了一些自定义,在端请求我们后台接口情况下,虽然多数情况是不需要关心错误码的,但是避免不了要某些场景还是需要根据固定错误码去做特殊处理,我自己定义了一个错误类,这个错误类只在 gateway 中使用:err.go:package xerr import "fmt" type...阅读全文

51CTO博客 2021-01-26 10:45:14 mb600beaa63f802

Go - httpclient 常用操作

httpclient模块介绍httpclient 是基于 net/http 封装的 Go HTTP 客户端请求包,支持常用的请求方式、常用设置,比如:支持设置 Mock 信息支持设置失败时告警支持设置失败时重试支持设置项目内部的 Trace支持设置超时时间、Header 等请求说明方法名描述httpclient.Get()GET 请求httpclient.Post()POST 请求httpclient.PostForm()POST 请求,form 形式httpclient.PostJSON()P...阅读全文

51CTO博客 2021-01-26 09:49:45 mb600beaa63f802

Go - httpclient 常用操作

模块介绍httpclient 是基于 net/http 封装的 Go HTTP 客户端请求包,支持常用的请求方式、常用设置,比如:支持设置 Mock 信息支持设置失败时告警支持设置失败时重试支持设置项目内部的 Trace支持设置超时时间、Header 等请求说明方法名描述httpclient.Get()GET 请求httpclient.PostForm()POST 请求,form 形式httpclient.PostJSON()POST 请求,json 形式httpclient.PutForm()...阅读全文

51CTO博客 2021-01-26 09:49:10 mb600beaa63f802

模块一 Go语言基础知识-命令源码文件

我们已经知道,环境变量 GOPATH 指向的是一个或多个工作区,每个工作区中都会有以代码包为基本组织形式的源码文件。这里的源码文件又分为三种,即:命令源码文件、库源码文件和测试源码文件,它们都有着不同的用途和编写规则。 今天,我们就沿着命令源码文件的知识点,展开更深层级的学习。 一旦开始学习用编程语言编写程序,我们就一定希望在编码的过程中及时地得到反馈,只有这样才能清楚对错。实际上,我们的有效学习和进步,都是通过不断地接受反馈和执行修正实现的。对于 Go 语言学习者来说,你在学习阶段中,也一定会...阅读全文

51CTO博客 2021-01-26 09:48:02 mb600beaa63f802

模块一 GO语言基础知识-库源码文件

你已经使用过 Go 语言编写了小命令(或者说微型程序)吗?当你在编写“Hello, world”的时候,一个源码文件就足够了,虽然这种小玩意儿没什么用,最多能给你一点点莫名的成就感。如果你对这一点点并不满足,别着急,跟着学,我肯定你也可以写出很厉害的程序。我们在上一篇的文章中学到了命令源码文件的相关知识,那么除了命令源码文件,你还能用 Go 语言编写库源码文件。那么什么是库源码文件呢?在我的定义中,库源码文件是不能被直接运行的源码文件,它仅用于存放程序实体,这些程序实体可以被其他代码使用(只要遵...阅读全文

51CTO博客 2021-01-26 09:47:22 mb600beaa63f802

Go 小白的十万个为什么

微信搜索【吴亲强的深夜食堂】公众号,分享一下奇奇怪怪的设计,关注我,获取更多学习资料上篇文章我提出 channel 在什么样的操作下会引发 panic。这篇文章就让我们来总结一下小白在 go 中经常会问的十万个为什么。string假设我们要修改类型为字符串变量的某个字符,如果是之前世界上最伟大的语言,那么可以直接这样(差点忘本不会写php了):<?php $name = "test"; $name[0] = "T"; var_dump($name); // string(4) "Test"在 g...阅读全文

Segmentfault 2021-02-01 10:32:34 .container .car 等

Soul - Monitor Plugin使用指南

目标 学习Soul网关monitor插件的使用。 Soul Admin 首先在Soul控制台 -> 系统管理 -> 插件管理,将"monitor"设置为开启状态 配置参数: metricsName: 监控指标名称 host: 为暴露给 prometheus服务来拉取的地址,不添默认是Soul网关的地址 port:为暴露给 prometheus服务来拉取的端口 async:是否异步pull监控指标数据 Soul-web网关 首先,在pom.xml加上如下配置: <dependency> <grou...阅读全文

简书 2021-01-26 03:32:52 铁皮_1192

Go语言的依赖管理

Go语言的依赖管理随着版本的更迭正逐渐完善起来。 依赖管理 为什么需要依赖管理 最早的时候,Go所依赖的所有的第三方库都放在GOPATH这个目录下面。这就导致了同一个库只能保存一个版本的代码。如果不同的项目依赖同一个第三方的库的不同版本,应该怎么解决? godep Go语言从v1.5开始开始引入vendor模式,如果项目目录下有vendor目录,那么go工具链会优先使用vendor内的包进行编译、测试等。 godep是一个通过vender模式实现的Go语言的第三方依赖管理工具,类似的还有由社区维...阅读全文

简书 2021-01-26 03:32:45 吴佳浩

golang 写个快速排序

快速排序是大多数语言内置 sort 函数的默认实现方式,简单可分为两路排序和三路排序,我在相关资料中,发现两路排序也有多种实现方式。 有些语言 sort 函数会包含 快速 希尔 插入 多种形式。 排序描述 从数列中挑出一个元素,称为 “基准”(pivot); 重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作; 递归地(recursive)把小于基准值...阅读全文

简书 2021-01-26 03:32:44 追风骚年