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

可能被忽略的Golang细节——range

range关键字是Go语言中一个非常有用的迭代array,slice,map, string, channel中元素的内置关键字。 range的使用 range的使用非常简单,对于遍历array,*array,string它返回两个值分别是数据的索引和值,遍历map时返回的两个值分别是key和value,遍历channel时,则只有一个返回数据。各种类型的返回值参考下表: range expression 1st Value 2nd Value(optional) notes array[n]E,*[n]E indexint value E[i] slice[]E indexint value E[i] string abcd indexint rune int 对于string,range...阅读全文

博文 2019-04-26 19:34:43 佛心看世界

[golang]用Go语言写的课表

package main import ( "fmt" "os" ) type tt struct { //定义数据结构 tt,用于存放每日的课程 One string //0 Two string //1 Three string //2 Four string //3 } type DAY struct { //定义数据结构 DAY ,用于存放一周的,英文简写 week string } func main() { //主函数 var weekday int //定义一个int 类型的值,weekday //fmt.Printf("Enter the weekday : ") //fmt.Scanf("%d",&weekday) weekday = getday() //从getday(...阅读全文

博文 2014-10-04 19:27:07 sndnvaps

Go基础系列:数据类型转换(strconv包)

Go不会对数据进行隐式的类型转换,只能手动去执行转换操作。 简单的转换操作 转换数据类型的方式很简单。 valueOfTypeB = typeB(valueOfTypeA) 例如: // 浮点数 a := 5.0 // 转换为int类型 b := int(a) Go允许在底层结构相同的两个类型之间互转。例如: // IT类型的底层是int类型 type IT int // a的类型为IT,底层是int var a IT = 5 // 将a(IT)转换为int,b现在是int类型 b := int(5) // 将b(int)转换为IT,c现在是IT类型 c := IT(b) 但注意: 不是所有数据类型都能转换的,例如字母格式的string类型"abcd"转换为int肯定会失败 低精度转换为高精...阅读全文

博文 2018-11-23 09:10:46 f-ck-need-u

用gomock进行mock测试

在开发过程中往往需要配合单元测试,但是很多时候,单元测试需要依赖一些比较复杂的准备工作,比如需要依赖数据库环境,需要依赖网络环境,单元测试就变成了一件非常麻烦的事情。举例来说,比如我们需要请求一个网页,并将请求回来的数据进行处理。在刚开始的时候,我通常都会先启动一个简单的http服务,然后再运行我的单元测试。可是这个单元测试测起来似乎非常笨重。甚至在持续集成过程中,我还为了能够自动化测试,特意写了一个脚本自动启动相应的服务。事情似乎需要进行一些改变。 mock对象就是为了解决上面的问题而诞生的,mock(模拟)对象能够模拟实际依赖对象的功能,同时又不需要非常复杂的准备工作,你需要做的,仅仅就是定义对象接口,然后实现它,再交给测试对象去使用。 go-mock是专门为go语言开发的mock库,该...阅读全文

博文 2017-06-22 17:05:38 terasum

怎么调用Service生命周期中 onStartCommand方法的返回值 ?

在Android开发中,调用Context的startService方法启动Service的生命周期时,如果Android面临内存匮乏,可能会销毁掉你当前运行的Service,然后待内存充足的时候可以重新创建Service,Service被Android系统强制销毁并再次重建的行为依赖于Service中onStartCommand方法的返回值。 而Service onStartCommand方法中,常用的返回值主要有:START_NOT_STICKY、START_STICKY和START_REDELIVER_INTENT三种,这三个值都是Service中的静态常量。下面小编就和大家分享下这三种返回值的具体的含义及使用情况。 START_NOT_STICKY ...阅读全文

基于Redis实现的延迟队列

delay-queue 延迟队列, 参考有赞延迟队列设计实现 项目地址 运行 ./delay-queue -c delay-queue.conf 默认监听0.0.0.0:9277 HTTP接口 请求方法 POST 请求Body及返回值均为json 返回值 { "code": 0, "message": "添加成功", "data": null } 参数名 类型 含义 备注 code int 状态码 0: 成功 非0: 失败 message string 状态描述信息 data object, null 附加信息 添加任务 URL地址 /push { "topic": "order", "id": "15702398321", "delay": 3600, "ttr": 120, "body"...阅读全文

博文 2017-07-04 16:04:57 order_c

GO语言中container/list使用详解

go中container中list的使用详解 1. func New() *List{} 初始化一个列表,返回类型为一个list对象 a := list.New() # 在函数内部 a = list.New() 输出: &{{0xc00006a300 0xc00006a300 } 0} 2. func (l List) Back() Element{} 返回链表的最后一个元素,返回类型元列表中的元素。 x := a.Back() fmt.Println(strings.Repeat("-----------", 10)) fmt.Println(x) &{0xc00006a300 0xc00006a330 0xc00006a300 b} 3. func (l List)...阅读全文

博文 2019-05-16 14:35:23 qq5c9c828bc8d4b

goconfig使用解析

注意事项 本博客隶属于 goconfig - 课时 1:goconfig 使用解析 请注意配套使用。 本博文为 goconfig - Go 语言 INI 解析器的配套博客,旨在通过文字结合代码示例对该库的使用方法和案例进行讲解,便于各位同学更好地使用和深入了解。 库简介 goconfig 是一个由 Go 语言开发的针对 Windows 下常见的 INI 格式的配置文件解析器。该解析器在涵盖了所有 INI 文件操作的基础上,又针对 Go 语言实际开发过程中遇到的一些需求进行了扩展。相对于其它 INI 文件解析器而言,该解析器最大的优势在于对注释的极佳支持;除此之外,支持多个配置文件覆盖加载也是非常特别但好用的功能。 下载安装 您可以通过以下两种方式下载安装 goconfig: gopm get...阅读全文

博文 2014-10-04 19:27:34 dandan.fs

golang生成JSON及解析JSON

一、JSON解析到结构体 在介绍这部分之前先简要介绍一下Json语法 JSON 语法是 JavaScript 语法的子集。JSON 语法是 JavaScript 对象表示法语法的子集。 数据在名称/值对中 数据由逗号分隔 大括号保存对象 中括号保存数组 1.JSON名称/值对 "name" : "value" 2.JSON值 可以是: 数字(整数或浮点数) 字符串(在双引号中) 逻辑值(true 或 false) 数组(在中括号中) 对象(在大括号中) null JSON数据 JSON 数字可以是整型或者浮点型 { "age":30 } JSON对象 JSON 对象在大括号({})中书写: 对象可以包含多个名称/值对: { "name": "runoob", "alexa": 10000, ...阅读全文

博文 2019-02-24 17:34:42 不屈真实

七牛---关于GO SDK的各种Demo

具体可以参考七牛GO SDK的源码以及官网使用文档,以下Demo针对V7版本的SDK: https://github.com/qiniu/go http://developer.qiniu.com/code/v7/sdk/go.html 文件上传 简单上传 package main import ( "github.com/qiniu/api.v7/kodo" "qiniupkg.com/api.v7/conf" "qiniupkg.com/api.v7/kodocli" "fmt" ) var ( //设置上传到的空间 bucket = "yourbucket" ) //构造返回值字段 type PutRet struct { Hash string `json:"hash"` Key s...阅读全文

博文 2016-03-24 14:00:01 netdxy

Java程序员的Golang入门指南(上)

Java程序员的Golang入门指南 1.序言 Golang作为一门出身名门望族的编程语言新星,像豆瓣的Redis平台Codis、类Evernote的云笔记leanote等。 1.1 为什么要学习 如果有人说X语言比Y语言好,两方的支持者经常会激烈地争吵。如果你是某种语言老手,你就是那门语言的“传道者”,下意识地会保护它。无论承认与否,你都已被困在一个隧道里,你看到的完全是局限的。《肖申克的救赎》对此有很好的注脚: [Red] These walls are funny. First you hate ‘em, then you get used to ‘em. Enough time passes, you get so you depend on them. That’s institu...阅读全文

博文 2015-06-19 23:00:22 dc_726

冲顶大会等答题类游戏答题神器

参考之前跳一跳外挂的的思路,也整了这么一个东西: [https://github.com/silenceper/qanswer](https://github.com/silenceper/qanswer "https://github.com/silenceper/qanswer") 通过抓取手机屏幕截图经过文字识别,结合搜索引擎给出一个参考值。 # 快速答题 《冲顶大会》,《百万英雄》等答题类游戏答题神器,顺利吃鸡! 通过抓取手机屏幕截图经过文字识别,结合搜索引擎给出一个参考值。 ![题目](https://raw.githubusercontent.com/silenceper/qanswer/master/docs/screenshot.png) ...阅读全文

【Go语言】【5】GO语言变量

变量也是语言的基本元素,与GO语言的常量类似,常量使用const关键字修饰,而变量使用var关键字修饰,变量声明的形式为var variableName variableType一、变量声明var age intvar phone intvar name stringvar address stringvar salary float64var consume float64var array [10]intvar frieds [20]string每个变量声明都使用一个var,上面的例子中能否能减少var的个数吗?前面说过GO是最懂程序员的,所以当然可以简写为:var ( age int phone int name string address string salary float64...阅读全文

博文 2017-02-09 15:58:07 qingkechina

分享一个好用的go语言写的微信支付插件库看着不错哦

# 微信支付 这是用Golang封装了微信的所有API接口的SDK,并自动生成和解析XML数据,包括微信支付、公众号、小程序、移动端的工具函数。 * 支持境内普通商户和境内服务商(境外和银行服务商没有条件测试)。 * 支持全局配置应用ID、商家ID等信息。 * 全部参数和返回值均使用`struct`类型传递,而不是`map`类型。 ### 安装 ```shell go get -u gitee.com/cuckoopark/wechat ``` ### 初始化 ```go const ( isProd = true // 生产环境或沙盒环境 isMch = false // 是否是企业模式,仅当调用企业付款时为true serviceType = wechat.ServiceTypeNorm...阅读全文

博文 2020-02-25 09:51:14 lu569368

七牛上传小工具-Go语言版本

运行环境: Mac os X and Linux 现在当前目录下创建qiniu.json文件: { "AK":"XXX" , "SK":"XXX", "BN":"xx" } package main import ( "encoding/json" "fmt" "io/ioutil" "os" "path" "strings" ) import ( . "github.com/qiniu/api/conf" "github.com/qiniu/api/io" "github.com/qiniu/api/rs" "github.com/qiniu/log" ) import ( "etag" ) var uptoken string var buckName string var curren...阅读全文

博文 2015-02-01 08:00:01 itfanr

Go 异常处理机制——defer, error, panic, recover

一、前言 在实际的项目中,对于异常的最佳实践很多,在使用不同的语言开发不同类型的程序时,有不同的建议。Google C++ Style 中提到 Google 内部的 C++ 代码中不使用异常,社区也有很多关于异常的讨论。 作为一门相对来说很新的语言,Go语言中没有使用传统的 try...catch 类似的异常处理机制,而是提供了 panic 和 recover 函数来处理所谓的运行时异常,也就是 Google 所称的错误处理机制。配合 defer 语句和 error 接口开发者可以非常灵活地处理运行时的错误和异常。Google 肯定不希望开发者在代码中随便使用 panic,我们知道在风险控制中,有所谓 已知的未知 和 未知的未知,在 Go 程序设计中,对于前者,我们可以通过预先开发的代码分支...阅读全文

博文 2016-12-01 13:00:01 吃一堑消化不良

Java调用Golang生成的动态库(dll,so)

## 0x01. 环境准备 ## A. GCC 在控制台中输入 ```bash gcc -v ``` 如果提示命令未找到,那么说明你的计算机中还没有gcc,去安装一个吧,gcc官方网站:https://gcc.gnu.org/ 如果从来没有安装过gcc的朋友可以直接安装win-build,可以帮你快速的安装 官方网站:http://mingw-w64.org/doku.php/download/win-builds ## 0x02. 编写go程序 我们这里只是编写一个简单的计算加法的程序,接受两个证书,然后计算他们的和,并返回。 在这里,我们将文件命名为libhello.go ```go package main import "C" //export Sum func Sum(a int,...阅读全文

博文 2018-07-17 11:20:02 LemonITCN

深入理解golang中bufio.SplitFunc

前言 golang的bufio包里面定以的SplitFunc是一个比较重要也比较难以理解的东西,本文希望通过结合简单的实例介绍SplitFunc的工作原理以及如何实现一个自己的SplitFunc。 一个例子 在bufio包里面定义了一些常用的工具比如Scanner,你可能需要读取用户在标准输入里面输入的一些东西,比如我们做一个复读机,读取用户的每一行输入,然后打印出来: package main import ( "bufio" "fmt" "os" ) func main() { scanner := bufio.NewScanner(os.Stdin) scanner.Split(bufio.ScanLines) for scanner.Scan() { fmt.Println(scan...阅读全文

博文 2018-10-14 00:34:40 goland

Go语言学习——深入了解defer

1.简介 defer是Go语言中的延迟调用函数,它是在函数真正返回之前立即执行,一般用于资源回收、捕捉异常操作,其实现原理是: 1)在对应语句打上标签,告诉系统,先不要调用、先执行入栈操作,待函数退栈时在一并调用; 2)当defer语句入栈时,会将函数地址、函数实参一同入栈,如果实参是表达式、函数语句,则会优先运行; 3)函数退栈时,无论是正常调用结束还是触发panic,都会调用之前入栈的defer语句,若有多个defer语句时,则按照FILO顺序执行调用; 2.使用 下面介绍def...阅读全文

golang 基础(10)函数返回值

square-gopher.png 返回值 在 go 语言中函数支持多个返回值 func div(a, b int) (int, int){ return a /b , a %b } 我们也可以给函数返回值打上标签 q, r func div(a, b int) (q,r int){ return a /b , a %b } 我们可以用两个变量来接受函数返回值 a, b := div(17,3) 如果我们只想使用一个返回值,也就是 a 而不使用 b,向下面这样做会在编译时报错,go 语言是比较严格语言 a, b := div(17,3) fmt.Println(a) 应该修改为,通过 _ 占位符来忽略掉不使用的变量 a, _ := div(17,3) fmt.Println(a) 到现在为止...阅读全文

beego controller响应json时如何忽略空值

beego controller响应json时如何忽略空值:如 ``` { "Id": 0, "Account": "admin", "Password": "", "RoleId": 0, "Status": "", "CreateTime": "0001-01-01T00:00:00Z", "CreateUserId": 0, "UpdateTime": "0001-01-01T00:00:00Z", "UpdateUserId": 0 } ``` 零值数据不返回 只返回 `{“Account”:"admin"}` 代码: ``` func (this *AdminManageController) GetCurrentSysAdm...阅读全文

go语言流程控制,函数等

一、if语句 if 语句没有圆括号,而必需要有花括号跟条件和 else在同一行 例: if myVar > 1 { myVar = 1 myVar1++ return } else { myVar = 3 myVar1-- return } if的条件中可以添加一句初始化语句,用”;” 分隔 if c:=1;myVar > 1 { myVar = 1 } 此变量c的作用域是在后面的{}内的。外面是不可见,同时如果不在后面使用也是会编译错误的。 [it招聘][1] 二、switch语句 跟一般语言不一样 case 匹配后,不会再往后匹配,如果要向后匹配,添加语句...阅读全文

Go返回参数命名

Go语言中可以为返回值定义名称。代码实例: package main import "fmt" func add1(a int, b int) int { return a + b } //将返回值取名为sum func add2(a int, b int) (sum int) { sum = a + b return } func main() { fmt.Println(add1(1, 2)) fmt.Println(add1(1, 2)) } 打印结果: 3 3 给返回值取名,在编码方面来讲不具有任何实用意义。 这么做的主要目的是为了使代码清晰。因为Go支持多个返回值,比如一个函数返回5个值, 这样写方法: func cal(a int, b int) (int,int,int,int...阅读全文

博文 2015-03-11 03:00:01 baiyuxiong

第一个 Go 程序

这里简单记录学习Golang之旅,方便自己回顾。 package main import "fmt"// 我们需要使用fmt包中的Println()函数 func main() { fmt.Println("Hello, world!") } 每个Go源代码文件的开头都是一个package声明,表示该Go代码所属的包。包是Go语言里最基本的分发单位,也是工程管理中依赖关系的体现。要生成Go可执行程序,必须建立一个名字为main的包,并且在该包中包含一个叫main()的函数(该函数是Go可执行程序的执行起点)。 Go语言的main()函数不能带参数,也不能定义返回值。命令行传入的参数在os.Args变量中保存。如果需要支持命令行开关,可使用flag包。 在包声明之后,是一系列的import语句...阅读全文

博文 2015-01-30 19:00:07 q454684431

go语言的string和slice是值拷贝吗?

package main import "fmt" func main() { var str string = "12345" tmpstr := str fmt.Printf("%x %x\n", str, tmpstr) tmpstr = tmpstr + "x" fmt.Printf("%x %x\n", str, tmpstr) var a []byte = []byte("12345") b := a fmt.Printf("%x %x\n", a, b) b = append(b, 'a') fmt.Printf("%x %x\n", a, b) } 应该是指针拷贝, 上面的输出是 3132333435 3132333435 3132333435 313233343578 31...阅读全文

博文 2016-03-18 13:00:02 frank0712105003

go int 值范围

uint8 : 0 to 255 uint16 : 0 to 65535 uint32 : 0 to 4294967295 uint64 : 0 to 18446744073709551615 int8 : -128 to 127 int16 : -32768 to 32767 int32 : -2147483648 to 2147483647 int64 : -9223372036854775808 to 9223372036854775807 http://www.voidcn.com/link?url=https://groups.google.com/group/golang-nuts/msg/71c307e4d73024ce?pli=...阅读全文

博文 2020-05-27 19:32:45 allenhaozi

golang实现dns域名解析(一)

本文将详细讲解如何用go语言一步一步实现dns域名解析的过程,并简单介绍点dns有关的知识,直接开始正题吧。 首先我们要了解dns解析的过程,没有了解的请看这里DNS入门(转)很详细。扫盲结束后,我们需要了解下dns报文格式,知道了报文的格式是怎样的,才可以写代码构造dns请求包: dns请求和应答都是用相同的报文格式,分成5个段(有的报文段在不同的情况下可能为空),如下: Header段是报文的头部,它定义了报文是请求还是应答,也定义了其他段是否需要存在,以及是标准查询还是其他。 Header包含如下字段: 各字段分别解释如下: ID:请求客户端设置的16位标示,服务器给出应答的时候会带相同的标示字段回来,这样请求客户端就可以区分不同的请求应答了。 QR:1个比特位用来区分是请求(0)还是...阅读全文

博文 2017-06-04 04:46:07 chase-wind

Go语言锁的解读

var l sync.Mutex var a string func f() { a = "hello, world" l.Unlock() } func main() { l.Lock() go f() l.Lock() print(a) } sync 包中实现了两个关于锁的数据类型,sync.Mutex 和 sync.RWMutex。[ 互斥锁 mutex 是独占型,只能 lock 一次, unlock 一次,然后才能继续 lock 否则阻塞。 读写互斥锁 reader-writer mutex 是所有的 reader 共享一把锁或是一个 writer 独占一个锁, 如果一个 reader lock 到锁了, 其他的 reader 还可以 lock 但是 writer 不能 lock 。...阅读全文

博文 2015-01-02 12:00:01 疯狂的兔子

Golang(Go语言)内置函数之append

append主要用于给某个切片(slice)追加元素 如果该切片存储空间(cap)足够,就直接追加,长度(len)变长;如果空间不足,就会重新开辟内存,并将之前的元素和新的元素一同拷贝进去第一个参数为切片,后面是该切片存储元素类型的可变参数 基础用法: slice := append([]int{1,2,3},4,5,6)fmt.Println(slice) //[1 2 3 4 5 6] 第二个参数也可以直接写另一个切片,将它里面所有元素拷贝追加到第一个切片后面。要注意的是,这种用法函数的参数只能接收两个slice,并且末尾要加三个点 slice := append([]int{1,2,3},[]int{4,5,6}...)fmt.Println(slice) //[1 2 3 4 5 6...阅读全文

博文 2016-02-23 15:00:03 QQ245671051

sync.Once的实现分析

sync.once可以控制函数只能被调用一次,不能多次重复调用。 我们可以用下面的代码实现一个线程安全的单例模式 ``` package singleton import ( "fmt" "sync" ) type object struct { name string } var once sync.Once var obj *object //单例指针 //公开方法 外包调用 func Instance() *object { once.Do(getObj) return obj } func getObj() { if obj == nil { obj = new(object) //可以做其他初始化事件 } } //单例测试 func (obj *object) Test() { f...阅读全文

博文 2016-06-11 20:17:31 shanks

[翻译] effective go 之 Errors

Errors Library routines must often return some sort of error indication to the caller. As mentioned earlier, Go's multivalue return makes it easy to return a detailed error description alongside the normal return value. By convention, errors have type error, a simple built-in interface. 库函数通常必须返回一些错误提示给调用者 正如之前提到的 Go函数支持多值返回 可以很容易地返回正常返回值的同时 返回详细的错...阅读全文

博文 2014-10-04 19:26:16 pengfei_xue

Go 多返回值

Go语言革命性地在静态开发语言阵营中率先提供了多返回值功能。这个特性让开发者可以从原来用各种比较别扭的方式返回多个值的痛苦中解脱出来,既不用再区分参数列表中哪几个用于输入,哪几个用于输出,也不用再只为了返回多个值而专门定义一个数据结构。 package main import "fmt" func vals() (int, int) { return 3, 7 } func main() { a, b := vals() fmt.Println(a) fmt.Println(b) _, c := vals() fmt.Println(c) } 123456789101112131415 package mainimport "fmt" func vals() (int, int) { ret...阅读全文

GRPC的HTTP返回值int64被转为string类型

问题描述 最近在使用http接口访问一个GRPC的服务时遇到一个数据类型转换的问题。一个时间戳字段在PB中定义的字段类型为uint64,返回到本地之后却是一个string类型,在我用uint64去接收这个字段时报了错。 原因分析 为什么GRPC要把int64转为string类型呢,他们的回答是遵循proto3的序列化规则,proto3的json-mapping中规定了int64/uint64/fixed64类型映射的json类型为string。如图:(PB文档地址:https://developers.google.com/protocol-buffers/docs/proto3#json) pb-josnMapping.jpg 很多人都质疑PB的这个行为,然而这并不能改变什么,下面是一个关...阅读全文

博文 2019-10-23 21:32:53 aside section._1OhGeD

【翻译】go语言中的map实战

业余时间翻译,水平很差,如有瑕疵,纯属无能。 原文链接 http://blog.golang.org/go-maps-in-action go语言中的map实战 1. 简介 哈希表是计算机科学中最重要的数据结构之一。许多哈希表的实现有着千差万别的特性,但是总体上他们都提供了快速查询,添加和删除功能。go语言提供了内置数据类型map。 2. 声明和初始化 map的声明格式如下: map[KeyType] ValueType KeyType类型必须是可以比较的,而ValueType可以是任意类型,甚至是另一个map。 以下这个m是一个键值为string,值为int的哈希表: var m map[string]int 哈希表类型是引用类型,像指针或者切片m指向的值是nil;它没有指向一个初始化了的...阅读全文

博文 2014-10-04 19:26:37 igloo1986

GO語言基礎教程:array,slice,map

這節課我們來講解數組,切片和map,或許您是從其他語言轉到GO語言這邊的,那麼在其他語言的影響下您可能會不太適應GO語言的數組,因為GO語言把數組給拆分成了array,slice和map,接下來的時間讓我們一起研究一下這三者的差異以及用法.首先我們說一下array的部份: 1.數組的長度屬於數組的一部份,我們看下邊的例子 a:=[1]int{}和b:=[2]int{} a和b都是數組,但是他們的長度不同,在GO語言中會認為是不同的兩種類型,既然是不同的類型,那麼他們就不能進行比較或直接賦值的操作.其實這並不難理解,因為GO語言是類型安全的語言,跨越類型的賦值需要顯示的改變數據類型才行. 2.在GO語言中數組屬於值類型,而非引用類型,如果要取得數組的指針只需要這麼做即可. a:=[1]int{...阅读全文

博文 2015-06-17 23:01:19 sibang

regexp的使用

我想取得href和之间的值..但都不成功..代码如下 之间有""就匹配不出来了 s := `< ahref="iiiii">jjjjjj,< ahref="kkkk">llll,punch,pinch` r := regexp.MustCompile(`< ahref="([^"]+)">([^]+)`) fmt.Println(r.FindString(s)) fmt.Println(r.FindAllString(s, -1)) fmt.Println(r.FindAllStringSubmatch(s, -1)...阅读全文

双十一生态狂欢节,三招教你购买超值云存储

10月24日阿里云双十一生态狂欢节盛大开幕,此次阿里云存储系列产品也带着云存储的各路看家产品想用户诚意献礼,双十一购买如何能够更实惠,小编为大家解决运存粗产品的购买攻略: 攻略一:10.24-11.10充储值卡•享返券•抽大奖 双十一预热活动已经正式拉开帷幕,首次购买储值卡,即可获得10%-15%的代金券返还,储值卡可用于新购、续费、升级阿里云网站云产品,包括包月包月产品和按量付费产品。储值卡有效期为四个月,除去双十一当天的折扣产品,如果您根据按量购买存储产品,也已经是8.5-9折了有木有!只要购买储值卡,即可100%获得抽奖机会,11,111,1111元代金券返现,千万不要错过呀。 攻略二:11.11狂欢节,三种存储产品聚献礼 双十一当天, 对象存储OSS...阅读全文

golang 继承 , 封装, 多态解释

用实现计算机加减法功能为例 继承 golang 中的继承是通过结构体中的匿名字段来实现 例:定义一个 BaseNum 对象 (结构体),作为父类,Add 和Sub 对象(结构体)中包含了BaseNum 匿名字段, 此时 Add 和Sub 就是BaseNum的子类 type BaseNum struct { num1 int num2 int } // BaseNum 即为父类型名称 type Add struct { BaseNum } //加法子类, 定义加法子类的主要目的, 是为了定义对应子类的方法 type Sub struct { BaseNum } //减法子类 封装 子类Add 和Sub 都有计算的方法 Opt func (a *Add)Opt()(value int) { re...阅读全文

博文 2018-12-27 20:34:42 husky_1

《Pokemon Go》之发现bug之后

近日,有一位叫 _problemz 《精灵宝可梦GO》的玩家在国外著名论坛Reddit上宣布,他是世 界上第一个到达满级的玩家,但随后他却要求开发商 Niantic 删除自己的账号。那么他是怎么 做到,又为何要删除账号呢? 在《精灵宝可梦GO》中,40 级就是玩家目前可以达到的最高级别,从 1 到 40 级需要两 千万的经验,按照国际惯例,越到后面是越难升级的,而从 39 级到 40 级,你需要 500 万经 验! 正常来说,玩家可以通过捕捉小精灵了、孵蛋、访问 Pokestop 、进化小精灵和攻占道馆 等动作均带来经验值,不过想孵蛋的话必须先有蛋,进化小精灵则需要一定数量的糖果,但访 问Pokestop的报酬并不优厚:一次才50经验值。 _problemz 称,他平均每分钟获得可以 28 ...阅读全文

博文 2016-08-04 20:00:04 codeIsMyGirl

go中的main函数和init函数

Go里面有两个保留的函数:init函数(能够应用于所有的package)和main函数(只能应用于package main)。这两个函数在定义时不能有任何的参数和返回值。虽然一个package里面可以写任意多个init函数,但这无论是对于可读性还是以后的可维护性来说,我们都强烈建议用户在一个package中每个文件只写一个init函数。 Go程序会自动调用init()和main(),所以你不需要在任何地方调用这两个函数。每个package中的init函数都是可选的,但package main就必须包含一个main函数。 程序的初始化和执行都起始于main包。如果main包还导入了其它的包,那么就会在编译时将它们依次导入。有时一个包会被多个包同时导入,那么它只会被导入一次(例如很多包可能都会用...阅读全文

博文 2016-02-14 04:00:00 yangyangye

Go range函数 用法

range函数是个神奇而有趣的内置函数,你可以使用它来遍历数组,切片和字典。 当用于遍历数组和切片的时候,range函数返回索引和元素; 当用于遍历字典的时候,range函数返回字典的键和值。 package main import ( "fmt" ) func main() { // 这里我们使用range来计算一个切片的所有元素和 // 这种方法对数组也适用 nums := []int{2, 3, 4} sum := 0 for _, num := range nums { sum += num } fmt.Println("sum:", sum) // range 用来遍历数组和切片的时候返回索引和元素值 // 如果我们不要关心索引可以使用一个下划线(_)来忽略这个返回值 // 当然我...阅读全文

博文 2017-02-10 12:22:05 谢权

[golang note] 函数定义

普通函数定义 √ golang函数基本组成:关键字func、函数名、参数列表、返回值、函数体和返回语句。 • 语法如下 func 函数名(参数列表) (返回值列表) { // 函数体 } • 示例如下 package main import "fmt" import "errors" func Add(a int, b int) (ret int, err error) { if a < 0 || b < 0 { // 假定只支持两个非负数字的加法 err = errors.New("Should be non-negative numbers!") return } return a + b, nil } func main() { fmt.Println(Add(-1, 1)) fmt....阅读全文

博文 2016-03-02 15:00:00 heartchord

go语言学习-变量

注:go语言中,不要求语句末尾加分号,这点和python类似。 注:go语言中,不允许定义没有用到的变量,否则报错,就像import一个没用到的package会报错一样。 1、纯粹的变量声明 纯粹的变量声明时,必须以关键字var开头,后面加空格跟定义的变量名,然后加空格跟变量类型。如: var tmpInt int var tmpString string var tmpIntArray [10]int var tmpSlice []int //数组切片 var tmpStruct struct { tmpI int } var tmpPtr *int var ( tmpInt_1 int tmpString_1string ) 2、变量初始化及赋值 go语言引入一个新的赋值符号 “:=”,...阅读全文

博文 2016-02-02 11:00:03 kuoshuang

golang chan make前后值比较

package main import ( "fmt" ) func main() { var chtest chan string fmt.Println("no make:", chtest) chtest = make(chan string, 10) fmt.Println("make no value:", chtest) chtest <- "one" fmt.Println("value one:", chtest) <-chtest fmt.Println("out value:", chtest) } 输出: no make: make no value: 0x1840d080 value one: 0x1840d080 out value: 0x1840d08...阅读全文

博文 2015-06-18 17:04:34 dayello

go中defer,panic,recover详解 go中的异常处理

golang中defer,panic,recover是很常用的三个特性,三者一起使用可以充当其他语言中try…catch…的角色,而defer本身又像其他语言的析构函数 defer 在函数返回之前调用,用于资源释放、打印日志、异常捕获等 f, err := os.Open(filename) if err != nil { return err } /** * 这里defer要写在err判断的后边而不是os.Open后边 * 如果资源没有获取成功,就没有必要对资源执行释放操作 * 如果err不为nil而执行资源执行释放操作,有可能导致panic */ defer f.Close() 如果有多个defer表达式,调用顺序类似于栈,越后面的defer表达式越先被调用(后进先出) func mai...阅读全文

博文 2018-10-25 10:34:44 smoke_zl

Go defer实现原理剖析

1. 前言defer语句用于延迟函数的调用,每次defer都会把一个函数压入栈中,函数返回前再把延迟的函数取出并执行。为了方便描述,我们把创建defer的函数称为主函数,defer语句后面的函数称为延迟函数。延迟函数可能有输入参数,这些参数可能来源于定义defer的函数,延迟函数也可能引用主函数用于返回的变量,也就是说延迟函数可能会影响主函数的一些行为,这些场景下,如果不了解defer的规则很容易出错。其实官方说明的defer的三个原则很清楚,本节试图汇总defer的使用场景并做简单说明。2. 热身按照惯例,我们看几个有意思的题目,用于检验对defer的了解程度。2.1 题目一下面函数输出结果是什么?func deferFuncParameter() { var aInt = 1 defer...阅读全文

博文 2018-11-07 19:35:14 萤火的萤

Think2Go戈登营首期review

2013-09-14 Think2Go戈登营首期review Go语言在CDN下载系统中的应用 Go在微博数据分析中的应用 golang与高强度在线服务 Go语言在CDN下载系统中的应用 今天去参加了Go语言上海的线下活动,这里做个简单的review。只是个人理解,可能有误,拍砖轻点。 首先是谢大闪亮登场,为我们分享他用Go语言在盛大的CDN系统中的应用,大家鼓掌。 我觉得讲的主要内容上可以分两大块来看,一部分是从中心结点到IDC的文件分发过程,另一部分是用户请求到达之后的调度设计。 主要应用场景像什么游戏客户端的分发之类的。先说中心结点服务器到IDC服务器的分发过程。 大家知道,国内的网络环境各种奇葩,最远的距离不是城市到城市的物理距离,而是我用电信,你用联通,或者他是教育网等等。IDC机...阅读全文

GoLang之基础

GoLang之基础 经典的"hello world"入门: package main import "fmt" func main() { fmt.Println("Hello world!") } 说明: 1、每个go源代码文件的开头都是一个package声明,表示该go代码所属的包;包是go语言中最基本的分发单位,也是工程管理中依赖关系的体现。要生成go可执行程序,必须建立一个名为main的package,并且在该package中包含一个叫main()的函数; 2、Go语言的main()函数不能带参数,也不能定义返回值,传入的命令行参数在os.Args变量中保存; 3、在包声明之后,是一系列的import语句,用于导入改程序所依赖的包,但不能导入在源代码文件中没有用到的包,否则Go编译器...阅读全文

博文 2015-05-05 03:00:00 chenny7