Go语言中的常量
1 概述
常量,一经定义不可更改的量。功能角度看,当出现不需要被更改的数据时,应该使用常量进行存储,例如圆周率。从语法的角度看,使用常量可以保证数据,在整个运行期间内,不会被更改。例如当前处理器的架构类型,可以保证不被更改。
语法如下
2 定义单个常量
const 常量名 <可选的类型...[2018/10/29]
Go基础系列:数据类型转换(strconv包)
Go不会对数据进行隐式的类型转换,只能手动去执行转换操作。
简单的转换操作
转换数据类型的方式很简单。
valueOfTypeB = typeB(valueOfTypeA)
例如:
浮点数
a := 5.0
转换为int类型
b := int(a)
Go允许在底层结构相同的两个...[2018/10/29]
go语言最快最好运用最广的web框架比较(大多数人不了解的特性)
令人敬畏的Web框架
如果你为自己设计一个小应用程序,你可能不需要一个Web框架,但如果你正在进行生产,那么你肯定需要一个,一个好的应用程序。
虽然您认为自己拥有必要的知识和经验,但您是否愿意自行编写所有这些功能的代码?
您是否有时间找到生产级外部包来完成这项工作? 您确定这将与您应用的其余部...[2018/10/29]
go语言的null值问题go语言的null值问题
关于go语言数据库存储和显示null值的问题困扰了我很久,并且也和群友讨论过这个问题,但是都没有得到相对满意和全面的答案。最近FQ找了几篇相对详细和权威的文章,分享给大家,希望和大家一起进步,go go go!
文章一:Go语言:解决数据库中null值的问题(转载国人文章)
&...[2018/10/29]
Go基础系列:流程控制结构
条件判断结构:if else
分支选择结构:switch case
循环结构:for
break:退出for或switch结构(以及select)
continue:进入下一次for迭代
虽然Go是类C的语言,但Go在这些流程控制语句中的条件表达式部分不使用括号。甚至有些时候使用括号会报错,但有...[2018/10/29]
go基础系列(5):数组
了解Python、Perl、JavaScript的人想必都知道它们的数组是动态的,可以随需求自动增大数组长度。但Go中的数组是固定长度的,数组一经声明,就无法扩大、缩减数组的长度。但Go中也有类似的动态"数组",称为slice数据结构,在下一篇文章会详细解释它。
Go中的数组...[2018/10/26]
修改并编译golang源码
最近为了做Hyperledger Fabric国密改造,涉及到了golang源码的改动。特将操作过程整理如下,以供参考:
golang的源码安装其实比较简单,只需运行源码包中的脚本src/all.bash,等到出现类似以下字样就安装好了:
Installed Go for linux/am...[2018/10/25]
Mac os安装golang开发环境
为了能够愉快地进行golang编程,我们需要安装以下几样东西:
包管理Homebrew
语言环境golang
版本管理git
虚拟器docker
编译器Goland
我将按照这个顺序叙述整个安装过程
docker 其实是可选的,它可以把应用程序打包为可移植的、自给自足的容器。这样一来,你...[2018/10/25]
Go基础系列(3):构建go程序
hello world
从一个简单的程序开始解释,将下面的内容放进test.go文件中,路径随意:
package main
import (
"fmt"
)
func main() {
fmt.Println("Hello World"...[2018/10/25]
golang环境搭建
目录
Golang的三种安装方式
下载
在Linux上安装
在Mac上安装
二进制包方式安装
PKG方式安装
学习一门编程语言总是从搭建这门语言的开发环境开始,作为一名以PHP为主要开发语言的后端开发者,我也一直想学习一门静态类型的编程语言,在了解了一些静态类型语言的特性后,最终我决定学习...[2018/10/25]
GOPATH
目录
GOPATH
代码目录结构规划
GOPATH
工作目录就是我们用来存放开发的源代码的地方,对应的就是Go里的GOPATH这个环境变量。这个环境变量指定之后,我们编译源代码等生成的文件都会放到这个目录下,GOPATH环境变量的配置参考golang环境搭建,配置到/etc/profile或...[2018/10/25]
Go语言执行流程Go语言执行流程
Go执行流程
如果是对源代码编译后,再执行,Go的执行流程如下图
go build生成的可执行文件会在当前目录内
如果是对源代码直接执行go run 源文件操作,Go的执行流程如下图
两种执行流程的方式说明
如果我们先编译生成了可执行文件,我们可以将该可执行文件拷贝到没有go开发环...[2018/10/25]
关于go语言的测试相关内容笔记关于go语言的测试相关内容笔记
其实之前对于测试自己一直比较弱,不管是python的还是go的,关于测试这块并没有非常注重,这次就好好整理一下关于go的测试
单元测试
Go程序主要包含三类测试: 功能测试(test)、基准测试(benchmark,也称性能测试)以及示例测试
这里提一下,示例测试其实也是一种功能测试,只...[2018/10/25]
Go基础系列(4):导入包和初始化阶段
import导入包
搜索路径
import用于导入包:
import (
"fmt"
"net/http"
"mypkg"
)
编译器会根据上面指定的相对路径去搜索包然后导入,这个相对路径是从GOROOT或GO...[2018/10/25]
go学习笔记(2):数据结构
Go语言不是一门面向对象的语言,没有对象和继承,也没有面向对象的多态、重写相关特性。
Go所拥有的是数据结构,它可以关联方法。Go也支持简单但高效的组合(Composition),请搜索面向对象和组合。
虽然Go不支持面向对象,但Go通过定义数据结构的方式,也能实现与Cla 相似的功能。
...[2018/10/23]
Golang Gin 项目包依赖管理 godep 使用Golang Gin 项目包依赖管理 godep 使用
Golang Gin 项目包依赖管理 godep 使用
标签(空格分隔): Go
在按照github.com/tool godep文档go get完包以后,调整项目结构为$GOPATH rc/$PROJECT_NAME/,同时使项目编译没有问题。执行godep save命令,出现了一系列包缺失...[2018/10/19]
gops —— Go 程序诊断分析工具
GitHub: https: github.com/google/gops
一个用于列出和诊断分析系统中正在运行的 Go 程序的命令行工具
安装
go get -u github.com/google/gops
命令帮助
执行 gops help 查看帮助文档:
gops is a t...[2018/10/19]
全面了解golang string全面了解golang string
string我们每天都在使用,可是对于string的细节问题你真的了解吗?
今天我们先以一个问题开篇。
你能猜到下面代码的输出吗?
package main
import (
"fmt"
)
func main() {
s := "测试"
fmt.Println...[2018/10/17]
关于go v1.11安装后出现不能正常运行测试程序的问题
本人最近安装go1.11后出现上述问题,没有找到原因,可能之前安装过的旧的版本在windows下环境变量设置出现了问题,修改后仍然无效,后来删除所有安装版本,及go环境变量,重新下载1.10版本进行安装,后正常
[2018/10/12]
Golang实现web文件共享服务的示例代码Golang实现web文件共享服务的示例代码
本文主要介绍了Golang实现web文件共享服务的示例代码,分享给大家,具体如下:
很简单,只需要两行代码。
http.Handle("/", http.FileServer(http.Dir("./"))) 把当前文件目录作为共享目录
http.ListenAndSer...[2018/10/12]
Go 入门 - 包,函数和变量
主要内容来自中文版的同名教程Go语言之旅
其目的为总结要点
包,函数和变量
包
import 语法,多个用括号换行扩起,包之间不需要间隔符,用引号引起
import (
"fmt"
"math/rand"
)
官方认为分组导入比多个导入更好
用`.`引用包内对象,仅有...[2018/10/11]
golang实现简易的分布式系统方法golang实现简易的分布式系统方法
本文介绍了golang实现简易的分布式系统方法,分享给大家,具体如下: 功能 能够发送/接收请求和响应 能够连接到集群 如果无法连接到群集(如果它是第一个节点),则可以作为主节点启动节点 每个节点有唯一的标识 能够在节点之间交换json数据包 接受命令行参数中的所有信息(将来在我们系统升级时将会很...[2018/10/10]
使goroutine同步的方法总结
前言:
在前面并发性能对比的文章中,我们可以看到Golang处理大并发的能力十分强劲,而且开发也特别方便,只需要用go关键字即可开启一个新的协程。
但当多个goroutine同时进行处理的时候,就会遇到同时抢占一个资源的情况(并发都会遇到的问题),所以我们希望某个goroutine等待另一个go...[2018/10/9]
2018.09.22 上海大学技术分享 - An Introduction To Go Programming Language
老实说笔者学习 Go 的时间并不长,积淀也不深厚,这次因缘巧合,同组的同事以前是上海大学的开源社区推动者之一,同时我们也抱着部分宣传公司和技术分享的意图,更进一步的,也是对所学做一个总结,所以拟定了这次分享。另外与会的同学大多都是大二大三的“萌新”,考虑到受众水平和技术分享的性质,所以实际上这次分...[2018/10/8]
Golang JSON的进阶用法实例讲解
痛点
json 是当前最常用的数据传输格式之一,纯文本,容易使用,方便阅读,在通信过程中大量被使用。
你是否遇到过json中某个字段填入某种类型都适合而陷入两难境地? (例如:定义了一个port字段,你却不知道是填入 8080 ,还是 “8080” 的尴尬局面)
你...[2018/9/27]
Golang编译器介绍
cmd/compile 包含构成 Go 编译器主要的包。编译器在逻辑上可以被分为四个阶段,我们将简要介绍这几个阶段以及包含相应代码的包的列表。
在谈到编译器时,有时可能会听到 前端(front-end)和 后端(back-end)这两个术语。粗略地说,这些对应于我们将在此列出的前两个和后两个阶段...[2018/9/27]
Derek解读Bytom源码-启动与停止
作者:Derek
简介
Github地址:https: github.com/Bytom/bytom
Gitee地址:https: gitee.com/BytomBlockchain/bytom
本章介绍bytom代码启动、节点初始化、及停止的过程
作者使用MacOS操作系统,其他平台也...[2018/9/25]
golang包管理解决之道——go modules初探
golang的包管理是一直是为人诟病之处,从golang1.5引入的vendor机制,到准官方工具dep,目前为止还没一个简便的解决方案。
不过现在go modules随着golang1.11的发布而和我们见面了,这是官方提倡的新的包管理,乃至项目管理机制,可以不再需要GOPATH的存在。
&...[2018/9/25]
在go modules里使用go get进行包管理
上一篇文章里我们介绍了go modules的初步使用,现在我们来更深入的了解一下如何使用go get在module中管理依赖。
module下的包管理
首先我们介绍过go mod edit修改go.mod,然而它有两点缺陷:
首先是它的-require必须接受“package...[2018/9/25]
使用Go语言操作MySQL数据库的思路与步骤
最近在做注册登录服务时,学习用Go语言操作MySQL数据库实现用户数据的增删改查,现将个人学习心得总结如下,另外附有代码仓库地址,欢迎各位有兴趣的fork。
软件环境:Goland、Navicat for MySQL。
一、实现思路
1,我的总体设计思路是先写出连接数据库和关闭数据库的逻辑...[2018/9/25]
使用Go语言+Protobuf协议完成一个多人聊天室
软件环境:Goland
Github地址
一、目的
之前用纯逻辑垒完了一个可登入登出的在线多人聊天室(代码仓库地址),这次学习了Protobuf协议,于是想试着更新下聊天室的版本。
主要目的是为了掌握Protobuf的使用。
二、设计思路
通过Pr...[2018/9/25]
go基础语法-变量定义
1.基础定义
变量类型在变量名后
var a int
var s string
2.定义并赋值
var a,b int = 1,2
var s string="abc"
3.类型推导
不用定义变量类型
var a,b,c,s = 1,2,true,"deduction"
4.简写(只能在函...[2018/9/25]
Go Code Review Comments 译文(截止2018年7月27日)Go Code Review Comments 译文(截止2018年7月27日)
持续更新中…
原文最新链接
https: github.com/golang/go/wiki/CodeReviewComment 5a40ba36d388ff1b8b2dd4c1c3fe820b8313152f
Github译文链接
https: github.com/wddpct/article...[2018/9/25]
Go学习笔记01Go学习笔记01
前言
Go(Golang)是Google开发的一种强静态类型、编译型、并发型,并具有垃圾回收功能的编程语言,所以使用Go编写的程序相比nodejs之类的弱类型语言,可以提前在编译阶段发现错误,而且由于没有类似JVM运行时,所以编译后的程序不是中间语言而是机器代码。总之,它类似c/c++拥有接近它们...[2018/9/25]
vscode调试golang环境搭建及配置
准备VSCode
在官网下载最新版的VSCode:
安装Golang插件
打开扩展面板
VSCode->查看->扩展
找到Go插件 在搜索框里输入Go, 找到第二行写有 Rich Go language support for Visual Studio Code的插件,...[2018/9/25]
解决$ go get google.golang.org/grpc上的包被墙的问题
今天get grpc包的时候
$ go get google.golang.org/grpc
发现拉不下来被墙了,在github.com上搜索grpc,clone到工程目录中,运行命令
go install google.golang.org/grpc
拿到了一些丢失的依赖包,比如...[2018/9/25]
在go modules中使用replace替换无法直接获取的package(golang.org/x/...)在go modules中使用replace替换无法直接获取的package(golang.org/x/...)
上一篇里我们介绍了使用go get进行包管理。
不过因为某些未知原因,并不是所有的包都能直接用go get获取到,这时我们就需要使用go modules的replace功能了。(当然大部分问题挂个梯子就能解决,但是我们也可以有其它选项)
使用replace替换package
...[2018/9/25]
go语言Mutex与RWMutex用法go语言Mutex与RWMutex用法
Mutex(互斥锁)
Lock()加锁,Unlock()解锁
适用于读写不确定,并且只有一个读或者写的场景
例:
package main
import (
"sync"
"time"
)
var (
l *sync.Mutex
i int
)
fu...[2018/9/25]
Go学习Go学习
Go学习
Go语言优势
可直接编译成机器码,不依赖其他库。
静态类型语言
语言层面支持并发
内置runtime,支持垃圾回收
简单易学,Go语言的作者都有C的基因,那么Go自然而然就有了C的基因,那么Go关键字是25个,但是表达能力很强大,几乎支持大多数其他语言见过的特性:继承、重载、对象...[2018/9/25]
Go学习笔记02Go学习笔记02
前言
上篇内容,介绍了如何在不同的系统上安装 Go 开发环境和部分参数的配置,也简单介绍了 package 的概念、导入方式和我对包的初始化过程的理解,关于初始化顺序的理解,可能有错误,后期会有修改,也希望大家能指出来,帮助我学习下,谢谢。
这篇内容,讲些基础的知识,比如变量的声明方式、变量的重...[2018/9/25]
go 源码学习之---Tail 源码分析
已经有两个月没有写博客了,也有好几个月没有看go相关的内容了,由于工作原因最近在做java以及大数据相关的内容,导致最近工作较忙,博客停止了更新,正好想捡起之前go的东西,所以找了一个源码学习
这个也是之前用go写日志收集的时候用到的一个包 :github.com/hpcloud/tail, ...[2018/9/25]
初识go的tomb包
在分析github.com/hpcloud/tail 这个包的源码的时候,发现这个包里用于了一个另外一个包,自己也没有用过,但是这个包在tail这个包里又起来非常大的作用
当时并没有完全弄明白这个包的用法和作用,所以又花时间找了这个包的使用和相关文档,其中看了https: blog.labix...[2018/9/25]
go开源项目influxdb-relay源码分析(一)
influxdb-relay项目地址: https: github.com/influxdata/influxdb-relay,主要作为负载均衡节点,写入多个influxdb节点,起到高可用效果。
不多说,开搞~
1、main.go
1 package main
2 ...[2018/9/25]
第一节 如何用Go实现单链表第一节 如何用Go实现单链表
一、概念介绍
下面这副图是我们单链表运煤车队。
每节运煤车就是单链表里的元素,每节车厢里的煤炭就是元素中保存的数据。前后车通过锁链相连,作为单链表运煤车,从1号车厢开始,每节车厢都知道后面拉着哪一节车厢,却不知道前面是哪节车厢拉的自己。第一节车厢没有任何车厢拉它,我们就叫它车头,第五节车厢...[2018/9/25]
第六节 Go数据结构之集合
一、什么是集合
集合就是不同对象的无序聚集。那么链表和集合有什么关系呢?我们来变个魔术。如下图是各种颜色组成的链表:
下面我们一步步把链表变成集合。
第一步砍去链接
第二步去掉重复
第三步放到一个框里摇一摇就成集合了
可以看出集合有这些特点:
无序:链表去掉链接,就是去...[2018/9/25]
Go语言简单学习
GO 支持goroutine 和通道,并且推荐使用消息而不是共享内存来进行并发编程,总体来说,Go语言是一个非常现代化的语言,精小但非常强大 Go语言的主要特性: 1、自动垃圾回收 2、更丰富的内置类型 3、函数多返回值 4、错误处理 5、匿名函数和闭包 6、类型和接口 7、并发编程 8、反射 9...[2018/9/25]
Ethereum(1)—— 基本介绍
1 环境安装 安装Ethereum 协议的Go语言的最新实现。 git clone https: github.com/ethereum/go-ethereum.git
make all
cd build/bin
sudo cp *&...[2018/9/25]
Golang教程之不可重入函数的实现方法Golang教程之不可重入函数的实现方法
函数function Go函数不支持嵌套、重载和默认参数 但支持以下特性: 无需声明原型 不定长度变参 多返回值 命名返回值参数 匿名函数 闭包 前言 一个不可重入的函数就是一个在任何时间点只能执行一次的函数,不管它被调用了多少次,以及有多少goroutines。 本篇文章说明了阻塞不可重入...[2018/9/25]