go语言学习
文章平均质量分 54
Publish or Perish
这个作者很懒,什么都没留下…
展开
-
Protobuf语言指南——.proto文件语法详解
Protobuf语言指南l 定义一个消息(message)类型l 标量值类型l Optional 的字段及默认值l 枚举l 使用其他消息类型l 嵌套类型l 更新一个消息类型l 扩展l 包(package)l 定义服务(service)l 选项(option)l 生成访转载 2017-08-17 16:51:18 · 11643 阅读 · 0 评论 -
go语言电子书
go语言电子书,中英文版网址:https://github.com/Agzs/golang-ebook/原创 2017-09-12 13:07:36 · 2639 阅读 · 0 评论 -
go语言中的interface使用
interfaceinterfaceGo语言里面设计最精妙的应该算interface,它让面向对象,内容组织实现非常的方便,当你看完这一章,你就会被interface的巧妙设计所折服。什么是interface简单的说,interface是一组method签名的组合,我们通过interface来定义对象的一组行为。我们前面一章最后一个例子中Student和Employee都能SayHi,虽然他们的内部转载 2017-09-15 15:53:38 · 389 阅读 · 0 评论 -
go语言中的并发处理
并发有人把Go比作21世纪的C语言,第一是因为Go语言设计简单,第二,21世纪最重要的就是并行程序设计,而Go从语言层面就支持了并行。goroutinegoroutine是Go并行设计的核心。goroutine说到底其实就是协程,但是它比线程更小,十几个goroutine可能体现在底层就是五六个线程,Go语言内部帮你实现了这些goroutine之间的内存共享。执行goroutine只需极少的栈内存(转载 2017-09-15 22:37:38 · 591 阅读 · 0 评论 -
go版本gRPC入门
1、前期准备前提运行 $ go version查看go语言版本,gRPC要求go 语言最低版本为1.5安装gRPC使用命令行安装Use the following command to install gRPC.$ go get google.golang.org/grpc Install Protocol Buffers v3Install the原创 2017-08-18 18:26:08 · 3251 阅读 · 0 评论 -
golang 安装使用 protobuf 的教程
golang 安装使用 protobuf 的教程1、下载protobuf的编译器protoc下载地址:window:下载: protoc-3.3.0-win32.zip解压,把bin目录下的protoc.exe复制到GOPATH/bin下,GOPATH/bin加入环境变量。当然也可放在其他目录,需加入环境变量,能让系统找到protoc.exelinux:下载:protoc-3.3.0-li原创 2017-08-18 17:54:07 · 1235 阅读 · 0 评论 -
进制表示 & 文件权限解读
1、进制表示2、文件权限解读原创 2017-08-14 16:44:53 · 866 阅读 · 0 评论 -
go命令
go buildgo build 命令主要是用于测试编译。在包的编译过程中,若有必要,会同时编译与之相关联的包。1、如果是普通包,当你执行go build命令后,不会产生任何文件。2、如果是main包,当只执行go build命令后,会在当前目录下生成一个可执行文件。如果需要在$GOPATH/bin木下生成相应的exe文件,需要执行go install 或者使用 go build -o 路径/a.e转载 2017-11-14 08:24:24 · 228 阅读 · 0 评论 -
append()函数
append主要用于给某个切片(slice)追加元素如果该切片存储空间(cap)足够,就直接追加,长度(len)变长;如果空间不足,就会重新开辟内存,并将之前的元素和新的元素一同拷贝进去第一个参数为切片,后面是该切片存储元素类型的可变参数基础用法:slice := append([]int{1,2,3},4,5,6)fmt.Println(slice) //[1 2 3 4 5 6]第二个原创 2017-11-21 21:47:47 · 29514 阅读 · 0 评论 -
go语言中的面向对象
面向对象前面两章我们介绍了函数和struct,那你是否想过函数当作struct的字段一样来处理呢?今天我们就讲解一下函数的另一种形态,带有接收者的函数,我们称为methodmethod现在假设有这么一个场景,你定义了一个struct叫做长方形,你现在想要计算他的面积,那么按照我们一般的思路应该会用下面的方式来实现package mainimport "fmt"type Rectangle stru转载 2017-09-15 15:24:31 · 423 阅读 · 0 评论 -
go语言的struct类型
struct类型structGo语言中,也和C或者其他语言一样,我们可以声明新的类型,作为其它类型的属性或字段的容器。例如,我们可以创建一个自定义类型person代表一个人的实体。这个实体拥有属性:姓名和年龄。这样的类型我们称之struct。如下代码所示:type person struct { name string age int}看到了吗?声明一个struct如此简单,上面转载 2017-09-15 12:51:51 · 896 阅读 · 0 评论 -
go语言中的main函数和init函数
main函数和init函数Go里面有两个保留的函数:init函数(能够应用于所有的package)和main函数(只能应用于package main)。这两个函数在定义时不能有任何的参数和返回值。虽然一个package里面可以写任意多个init函数,但这无论是对于可读性还是以后的可维护性来说,我们都强烈建议用户在一个package中每个文件只写一个init函数。Go程序会自动调用init()和mai转载 2017-09-15 12:09:36 · 534 阅读 · 0 评论 -
golang语言并发与并行—goroutine和channel的详细理解
如果不是我对真正并行的线程的追求,就不会认识到Go有多么的迷人。Go语言从语言层面上就支持了并发,这与其他语言大不一样,不像以前我们要用Thread库 来新建线程,还要用线程安全的队列库来共享数据。以下是我入门的学习笔记。Go语言的goroutines、信道和死锁goroutinego语言中有个概念叫做goroutine, 这类似我们熟知的线程,但是更轻。以下的程序,我们串行地去执行两次loop函数转载 2017-08-24 18:36:15 · 554 阅读 · 1 评论 -
运行go get 指令 提示unrecognized import path
今天想测试一下grpc,运行指令如下:go get google.golang.org/grpc提示结果如下:package google.golang.org/grpc: unrecognized import path "google.golang.org/grpc" (https fetch: Get https://google.golang.org/grpc?go-get=1: dial原创 2017-08-21 22:59:46 · 24428 阅读 · 2 评论 -
go语言使用.yaml文件
golang中如何使用json在前面介绍过了: 《Go语言学习之encoding/json包(The way to go)》golang中如何使用xml在前面也有介绍过: 《Go语言学习之encoding/xml(The way to go)》json使用JSON(JavaScript Object Notation, js 对象标记) 是一种轻量级的数据交换格转载 2017-08-15 17:39:32 · 1923 阅读 · 0 评论 -
Hyperledger fabric 学习笔记: go语言 与 JSON
1、JSON 介绍 JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。具体介绍可参考https://zh.wikipedia.org/wiki/JSON 2、JSON 与 Go Go语言自带的JSON转换库为 encoding/json。 http://golang.org/doc/articles/json_and_go.ht原创 2017-08-06 22:42:54 · 816 阅读 · 1 评论 -
go语言字符串格式化
Go语言对字符串格式化提供了良好的支持。下面通过代码展示字符串的格式化。package mainimport "fmt"import "os"type point struct { x, y int}func main() { // Go提供了几种打印格式,用来格式化一般的Go值,例如 // 下面的%v打印了一个point结构体的对象的值 p转载 2017-08-15 09:22:01 · 807 阅读 · 0 评论 -
go语言中可变参数函数
对于在调用可变参数函数时,不是总能使用省略号将一个切片展开,有时候编译器可能会报错,为了清除的说明这个问题,用几个小例子一步一步说明。1、提出假想的需求假如想要在一堆数据中找出最小的一个,该怎么做?如果数据的类型为int,那么可以这么做:func MinimumInt(first int, others ...int) int { min := first for _, value转载 2017-08-22 15:45:51 · 894 阅读 · 0 评论 -
go语言中的互斥 + defer
互斥互斥是传统的并发程序对共享资源进行访问控制的主要手段。它由标准库代码包sync中的Mutex结构体类型代表。sync.Mutex类型(确切地说,是*sync.Mutex类型)只有两个公开方法——Lock和Unlock。顾名思义,前者被用于锁定当前的互斥量,而后者则被用来对当前的互斥量进行解锁。包导入import "sync" //处理同步需求,导入包定义 我们只需对它进行简单声明就可以原创 2017-08-22 16:17:55 · 1031 阅读 · 0 评论 -
go-logging的使用
logging包实现了Go的日志记录基础设施。 其输出格式是可自定义的,并支持不同的日志后端,如syslog,文件和内存。 可以使用多个后端,每个后端和记录器具有不同的日志级别。这是官方的例子:package mainimport ( "os" "github.com/op/go-logging")var log = logging.MustGetLogger("example")/原创 2017-08-23 10:06:37 · 4647 阅读 · 0 评论 -
go 语言怎么写test测试
Go怎么写test测试用例开发程序其中很重要的一点是测试,我们如何保证代码的质量,如何保证每个函数是可运行,运行结果是正确的,又如何保证写出来的代码性能是好的,我们知道单元测试的重点在于发现程序设计或实现的逻辑错误,使问题及早暴露,便于问题的定位解决,而性能测试的重点在于发现程序设计上的一些问题,让线上的程序能够在高并发的情况下还能保持稳定。本小节将带着这一连串的问题来讲解Go语言中如何来实现单元测转载 2017-08-23 16:17:36 · 11319 阅读 · 3 评论 -
go语言中函数作为值、类型
函数作为值、类型在Go中函数也是一种变量,我们可以通过type来定义它,它的类型就是所有拥有相同的参数,相同的返回值的一种类型type typeName func(input1 inputType1 , input2 inputType2 [, ...]) (result1 resultType1 [, ...])函数作为类型到底有什么好处呢?那就是可以把这个类型的函数当做值来传递,请看下面的例子原创 2017-09-15 11:44:26 · 600 阅读 · 0 评论 -
go语言中的import
import我们在写Go代码的时候经常用到import这个命令用来导入包文件,而我们经常看到的方式参考如下:import( "fmt")然后我们代码里面可以通过如下的方式调用fmt.Println("hello world")上面这个fmt是Go语言的标准库,其实是去GOROOT环境变量指定目录下去加载该模块,当然Go的import还支持如下两种方式来加载自己写的模块:相对路径imp原创 2017-09-15 12:05:24 · 542 阅读 · 0 评论 -
Ubuntu设置GOPATH环境变量
1、Ubuntu保存环境变量的几个文件/etc/profile在用户登录时,操作系统定制用户环境时使用的第一个文件,此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行。/etc /environment在用户登录时,操作系统使用的第二个文件, 系统在读取用户个人的profile前,设置环境文件的环境变量。~/.profile在用户登录时,用到的第三个文件 是.profile文件,每原创 2018-04-09 19:13:07 · 9147 阅读 · 0 评论