golang

golang介绍

心已入冬 提交于 2020-03-20 10:15:23
一、golang介绍 golang 是Google开发的一种 静态强类型、编译型,并发型,并具有垃圾回收功能的编程语言。 二、语言特性 1.、自动垃圾回收 2、支持函数多返回值 3、并发强 三、golang程序基本语法 1、所有go源码以.go结尾 2、go程序执行入口是main()函数 3、go语言严格区分大小写 4、go语言编译时是一行一行编译的,所以代码一行不能写入多条的语句 5、go语言定义的变量和import的包,如果没有使用,就会报错 四、GO语言特殊字符 1、\t   指标符(tab建) 2、\n   换行符 3、\    取消符号转义,(类似shell的\) 4、\r   回车键 五、GO语言注释 1、//   单行注释 2、/**/    多行注释(/*注释内容*/) 六、Go语言代码规范 1、 缩进标准为一个tab的长度 2、运算符以一个空格隔开(var x = a + b) 3、go语言写法只能 func add(){ //大括号在这 } 不允许如下 func add() { //大括号在这 } 4、保留关键字 break default func interface select case defer go map struct chan else goto package switch const fallthrough if range type

golang test 说明解读

ぃ、小莉子 提交于 2020-03-19 13:00:25
3 月,跳不动了?>>> 本文为转载,原文地址: http://www.cnblogs.com/yjf512/archive/2013/01/22/2870927.html go test是go语言自带的测试工具,其中包含的是两类,单元测试和性能测试 通过go help test可以看到go test的使用说明: 格式形如: go test [-c] [-i] [build flags] [packages] [flags for test binary] 参数解读: -c : 编译go test成为可执行的二进制文件,但是不运行测试。 -i : 安装测试包依赖的package,但是不运行测试。 关于build flags,调用go help build,这些是编译运行过程中需要使用到的参数,一般设置为空 关于packages,调用go help packages,这些是关于包的管理,一般设置为空 关于flags for test binary,调用go help testflag,这些是go test过程中经常使用到的参数 -test.v : 是否输出全部的单元测试用例(不管成功或者失败),默认没有加上,所以只输出失败的单元测试用例。 -test.run pattern: 只跑哪些单元测试用例 -test.bench patten: 只跑那些性能测试用例 -test

golang test说明解读

落花浮王杯 提交于 2020-03-19 13:00:02
3 月,跳不动了?>>> go test是go语言自带的测试工具,其中包含的是两类,单元测试和性能测试 通过go help test可以看到go test的使用说明: 格式形如: go test [-c] [-i] [build flags] [packages] [flags for test binary] 参数解读: -c : 编译go test成为可执行的二进制文件,但是不运行测试。 -i : 安装测试包依赖的package,但是不运行测试。 关于build flags,调用go help build,这些是编译运行过程中需要使用到的参数,一般设置为空 关于packages,调用go help packages,这些是关于包的管理,一般设置为空 关于flags for test binary,调用go help testflag,这些是go test过程中经常使用到的参数 -test.v : 是否输出全部的单元测试用例(不管成功或者失败),默认没有加上,所以只输出失败的单元测试用例。 -test.run pattern: 只跑哪些单元测试用例 -test.bench patten: 只跑那些性能测试用例 -test.benchmem : 是否在性能测试的时候输出内存情况 -test.benchtime t : 性能测试运行的时间,默认是1s -test.cpuprofile

Go 函数

江枫思渺然 提交于 2020-03-19 03:06:54
Golang之匿名函数和闭包 Go语言支持匿名函数,即函数可以像普通变量一样被传递或使用。 使用方法如下: main.go package main import ( "fmt" ) func main() { var v func(a int) int v = func(a int) int { return a * a } fmt.Println(v(6)) //两种写法 v1 := func(i int) int { return i * i } fmt.Println(v1(7)) } GO语言的匿名函数就是闭包,以下是《GO语言编程》中对闭包的解释 基本概念 闭包是可以包含自由(未绑定到特定对象)变量的代码块,这些变量不在这个代码块内或者 任何全局上下文中定义,而是在定义代码块的环境中定义。要执行的代码块(由于自由变量包含 在代码块中,所以这些自由变量以及它们引用的对象没有被释放)为自由变量提供绑定的计算环 境(作用域)。 闭包的价值 闭包的价值在于可以作为函数对象或者匿名函数,对于类型系统而言,这意味着不仅要表示 数据还要表示代码。支持闭包的多数语言都将函数作为第一级对象,就是说这些函数可以存储到 变量中作为参数传递给其他函数,最重要的是能够被函数动态创建和返回。 再次讲解闭包: 一个函数和与其相关的引用环境,组合而成的实体: package main import

Golang 实现RSA加密解密

筅森魡賤 提交于 2020-03-18 14:11:33
生成RSA证书: openssl方式生成 生成私钥 openssl genrsa -out rsa_private_key.pem 1024 生成公钥 openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem Go代码方式生成 package main import ( "crypto/rand" "crypto/rsa" "crypto/x509" "encoding/pem" "os" ) //生成RSA私钥和公钥,保存到文件中 // bits 证书大小 func GenerateRSAKey(bits int) { //GenerateKey函数使用随机数据生成器random生成一对具有指定字位数的RSA密钥 //Reader是一个全局、共享的密码用强随机数生成器 privateKey, err := rsa.GenerateKey(rand.Reader, bits) if err != nil { panic(err) } //保存私钥 //通过x509标准将得到的ras私钥序列化为ASN.1 的 DER编码字符串 X509PrivateKey := x509.MarshalPKCS1PrivateKey(privateKey) //使用pem格式对x509输出的内容进行编码 /

golang 终端go命令使用

女生的网名这么多〃 提交于 2020-03-18 13:52:01
查看可用命令 直接在终端中输入 go help 即可显示所有的 go 命令以及相应命令功能简介,主要有下面这些: build: 编译包和依赖 clean: 移除对象文件 doc: 显示包或者符号的文档 env: 打印go的环境信息 bug: 启动错误报告 fix: 运行go tool fix fmt: 运行gofmt进行格式化 generate: 从processing source生成go文件 get: 下载并安装包和依赖 install: 编译并安装包和依赖 list: 列出包 run: 编译并运行go程序 test: 运行测试 tool: 运行go提供的工具 version: 显示go的版本 vet: 运行go tool vet 命令的使用方式为: go command [args] , 除此之外,可以使用 go help <command> 来显示指定命令的更多帮助信息。 在运行 go help 时,不仅仅打印了这些命令的基本信息,还给出了一些概念的帮助信息: c: Go和c的相互调用 buildmode: 构建模式的描述 filetype: 文件类型 gopath: GOPATH环境变量 environment: 环境变量 importpath: 导入路径语法 packages: 包列表的描述 testflag: 测试符号描述 testfunc: 测试函数描述 同样使用

Golang 中常见数据格式处理

为君一笑 提交于 2020-03-17 12:30:53
数据格式介绍 数据格式是系统中数据交互不可缺少的内容 这里主要介绍 JSON 、 XML 、 MSGPack JSON json 是完全独立于语言的文本格式,是 k-v 的形式 name:zs 应用场景:前后端交互,系统间数据交互 json 使用 go 语言内置的 encoding/json 标准库 编码 json 使用 json.Marshal() 函数可以对一组数据进行 JSON 格式的编码 生成 json 格式 通过结构体生成 JSON 需要格式化的结构体中的字段必须是一个外部可调用的字段(首写字母大写),否则再 json 包中无法识别则读取不到 输出的 json key 是字段名称 package main import ( "encoding/json" "fmt" ) type Person struct { Name string Age int } func main() { p := &Person{"zs", 18} // 生成json b, err := json.Marshal(p) if err != nil { fmt.Println("json 序列化失败", err) return } fmt.Println(string(b)) // 格式化输出 b, err = json.MarshalIndent(p, "", " ") if err !=

golang sha256

元气小坏坏 提交于 2020-03-17 09:26:16
/** func Sum256(data []byte) [Size]byte Sum256 returns the SHA256 checksum of the data. func EncodeToString(src []byte) string EncodeToString returns the hexadecimal encoding of src. */ package main import ( "crypto/sha256" "encoding/hex" "log" ) func calculateHash(toBeHashed string) string { hashInBytes := sha256.Sum256([]byte(toBeHashed)) hashStr := hex.EncodeToString(hashInBytes[:]) log.Printf("%s\n %s\n", toBeHashed, hashStr) return hashStr } func main() { calculateHash("test1") } 来源: https://www.cnblogs.com/udont/p/12508421.html

Golang通过syscall调用windows dll方法

让人想犯罪 __ 提交于 2020-03-17 02:12:15
某厂面试归来,发现自己落伍了!>>> 本用例在 GO 1.4.2 上编译执行通过,直接上CODE: package main import ( "fmt" "syscall" "time" "unsafe" ) const ( MB_OK = 0x00000000 MB_OKCANCEL = 0x00000001 MB_ABORTRETRYIGNORE = 0x00000002 MB_YESNOCANCEL = 0x00000003 MB_YESNO = 0x00000004 MB_RETRYCANCEL = 0x00000005 MB_CANCELTRYCONTINUE = 0x00000006 MB_ICONHAND = 0x00000010 MB_ICONQUESTION = 0x00000020 MB_ICONEXCLAMATION = 0x00000030 MB_ICONASTERISK = 0x00000040 MB_USERICON = 0x00000080 MB_ICONWARNING = MB_ICONEXCLAMATION MB_ICONERROR = MB_ICONHAND MB_ICONINFORMATION = MB_ICONASTERISK MB_ICONSTOP = MB_ICONHAND MB_DEFBUTTON1 = 0x00000000 MB

golang sort 包使用,及三个简单排序算法冒泡,插入,选择 练习

冷暖自知 提交于 2020-03-17 02:04:59
某厂面试归来,发现自己落伍了!>>> sort 包的核心类型是 sort.Interface: type Interface interface { // Len is the number of elements in the collection. Len() int // Less reports whether the element with // index i should sort before the element with index j. Less(i, j int) bool // Swap swaps the elements with indexes i and j. Swap(i, j int) } 接口 是golang 的很cool 的特性,rob pike 说接口有点类似uinx pipe,把不同的代码片段连接在一起,这个契约就是接口规范, 提供了指定的功能集合, 不管你的内部实现。var s sort.Interface, s 是抽象的接口类型, 具体类型u只要提供了 Len(), Less(), Swap(), s = u, 就可以把 u 型变量赋值s, 还体现在 函数函数 是 s, 返回值是s 的地方。 sort.Ints, sort.Float64s, sort.Strings, 都是库方便的包装,如 sort.Ints 是这样实现的: