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

Golang笔记之值类型和引用类型

值类型:所有像int、float、bool和string这些类型都属于值类型,使用这些类型的变量直接指向存在内存中的值,值类型的变量的值存储在栈中。当使用等号=将一个变量的值赋给另一个变量时,如 j = i ,实际上是在内存中将 i 的值进行了拷贝。可以通过 &i 获取变量 i 的内存地址 引用类型:复杂的数据通常会需要使用多个字,这些数据一般使用引用类型保存。一个引用类型的变量r1存储的是r1的值所在的内存地址(数字),或内存地址中第一个字所在的位置,这个内存地址被称之为指针,这个指针实际上也被存在另外的某一个字中。 局部变量被声明后必须在相同的代码块中使用它,否则会得到编译错误,全局变量允许声明但不使用 如果要交换两个变量(已声明且赋值)的值,可以简单地使用a,b = b,a,这被称为并...阅读全文

博文 2017-05-17 12:23:47 弧度里的微笑

Go连接MySql数据库too many connections

Go中连接数据库的连接池:当你需要和数据库通信时,就会从连接池里面取出一个连接,和数据库交互。使用完的闲置的连接会回到连接池,等待下一次的调用。如果连接池里面没有闲置的连接,会自动创建一个新的连接出来。其中有一段: An sql.Row returns the connection when Scan() is called, sql.Rows returns either when Close() is called or all rows have been iterated over with Next(), and sql.Tx will return when Commit or Rollback() are called. If you forget to completely ...阅读全文

博文 2015-06-05 23:00:05 牛牛张

Go语法

Go基础 变量 基本结构:var 变量名 变量类型 = 值 注:_(下划线)是个特殊的变量名,任何赋予它的值都会被丢弃 package main /* 全局变量 */ // 仅声明, 必要有var和变量类型 var a int var b, c int // 声明并初始化,变量类型可省略 var d int = 1 var e, f int = 1, 2 var g = 1 // 自动推断类型 var h, i = 1, "string" // 类型可以不一样 func main() { /* 局部变量特有的声明方式 */ j := 1 k, l := 1, 2 } 常量 常量可定义为数值、布尔值或字符串等类型。 /* 全局和局部声明方式相同 */ const a int = 1 const...阅读全文

博文 2015-04-03 18:00:19 LeoHsiun

golang map sort

import ( "fmt" "sort")type MapSorter []Itemtype Item struct { Key string Val int64}func NewMapSorter(m map[string]int64) MapSorter { ms := make(MapSorter, 0, len(m)) for k, v := range m { ms = append(ms, Item{k, v}) } return ms}func (ms MapSorter) Len() int { return len(ms)}func (ms MapSorter) Less(i, j int) bool { return ms[i].Val < ms[j].Val // 按...阅读全文

博文 2018-08-01 22:34:51 夜空一起砍猩猩

go语言scan空值报错

http://xmarker.blog.163.com/blog/static/22648405720144743531420/ 今天使用go语言时,如果数据库里有空值,扫描出来报错,其中环境是这样的,数据库为postgresql9.3.2(其实和数据库无关),数据库里的数据如下: db_public=> \d t_tmp Table "usr_public.t_tmp" Column | Type | Modifiers --------+-----------------------------+----------- id | integer | not null name | character varying(30) | remark | text | time | timesta...阅读全文

博文 2016-04-19 18:00:01 leonpengweicn

【有人@你】双11最时髦的消费 全宇宙的程序猿一起来HIGH

每一年,都在为媳妇买、买、买的程序猿,终于迎来了属于自己的狂欢盛宴。 没错,今年双11,阿里云会拿出若干爆款,让小伙伴们一起来high。 红包、折扣、秒杀、全场产品优惠、中奖100%…… 如何玩转阿里云双11,流量够不够都要往下拉! 1、双11当天,00:30、10:30、14:30,三场秒杀活动,云服务器ECS、云数据库RDS、弹性安全网络全部一折秒杀来袭。 2、双11当天单笔实付满1000元,即可参与抽奖,百发百中哦! 3、在校大学生双11当天享受云服务器ECS 9.9元/月+39.9元的云计算在线课程,理论+实践,才是硬本领。 4、只需实名认证,即日起登陆阿里云双11会场就能抢红包,红包最高1111元,100%中奖不掺水。 5、无论企业或个人,认证后即...阅读全文

Golang的单引号、双引号与反引号

Go语言的字符串类型string在本质上就与其他语言的字符串类型不同: Java的String、C++的std::string以及Python3的str类型都只是定宽字符序列 Go语言的字符串是一个用UTF-8编码的变宽字符序列,它的每一个字符都用一个或多个字节表示 即:一个Go语言字符串是一个任意字节的常量序列。 Golang的双引号和反引号都可用于表示一个常量字符串,不同在于: 双引号用来创建可解析的字符串字面量(支持转义,但不能用来引用多行) 反引号用来创建原生的字符串字面量,这些字符串可能由多行组成(不支持任何转义序列),原生的字符串字面量多用于书写多行消息、HTML以及正则表达式 而单引号则用于表示Golang的一个特殊类型:rune,类似其他语言的byte但又不完全一样,是指:码...阅读全文

博文 2017-02-09 08:16:17 wiowei

go语言基本数据类型

初识GO语言 go是一门新语言,他在语言级提供了并发的支持(goroutine)和通信工具channel,同时它也是一门编译型、强类型的语言,拥有内存GC机制。程序的模块通过package来组织。 GO基础 整数 十进制整数,使用0-9的数字表示且不以0开头。 八进制整数,以0开头,0-7的数字表示 十六进制整数,以0X或者是0x开头,0-9|A-F|a-f组成 100 123455 0100 0600 0xff 0xFF12 浮点数 浮点数由整数部分、小数点和小数部分组成,整数部分和小数部分可以隐藏其中一种。也可以使用科学计数法表示: 0. 72.40 072.40 和72.40一样 2.71823 1.e+0 6.67428e-11 1E6 .25 .12345E+5 复数的虚部 由一个...阅读全文

博文 2016-12-09 09:00:04 sydnash

golang编译时的参数传递(gcflags, ldflags)

go build 可以用-gcflags给go编译器传入参数,也就是传给go tool compile的参数,因此可以用go tool compile --help查看所有可用的参数。其中-m可以检查代码的编译优化情况,包括逃逸情况和函数是否内联。如果只在编译特定包时需要传递参数,格式应遵守“包名=参数列表”,如go build -gcflags -gcflags='log=-N -l' main.gogo build用-ldflags给go链接器传入参数,实际是给go tool link的参数,可以用go tool link --help查看可用的参数。常用-X来指定版本号等编译时才决定的参数值。例如代码中定义var buildVer string,然后在编译时用go build -ldf...阅读全文

博文 2019-10-12 11:32:47 aside section ._1OhGeD

golang reflect

reflect包实现了运行时反射,允许程序操作任意类型的对象。典型用法是用静态类型interface{}保存一个值,通过调用TypeOf获取其动态类型信息,该函数返回一个Type类型值。调用ValueOf函数返回一个Value类型值,该值代表运行时的数据。Zero接受一个Type类型参数并返回一个代表该类型零值的Value类型值 type package main import ( "reflect" "fmt" ) type lx interface { SayHi() } type User struct { Name string Age int64 Sex string } func (u *User) SayHi() { fmt.Println("hello world") } f...阅读全文

博文 2015-10-05 10:00:04 别人说我名字很长

go语言捕获panic异常并转化为error

package main import ( "fmt" "errors" ) func testPanic2Error() (err error) { //捕获 and 恢复 panic. /*注意defer延迟执行的函数可以修改外围函数“testPanic2Error”的命名返回值. *通过调用recover捕获panic并转化为error. 也许有人打算在main函数中放一个下面这个defer语句,用于捕获程序中的一切panic异常, *建立最后一道防火墙,从而使程序避免崩溃运行下去, 但很不幸, 当main函数的defer延迟函数被执行时,也就意味着main函数要退出了, *此时再捕获panic恢复程序,意义还有多大呢;不过我们有办法克服, 建立一个像“testPanic2Error”...阅读全文

博文 2016-03-27 10:00:04 htyu_0203_39

golang笔记——函数与方法

你可能会偶尔遇到没有函数体的函数声明,这表示该函数不是以Go实现的。这样的声明定义了函数标识符。 package math func Sin(x float64) float //implemented in assembly language如果一个函数将所有的返回值都显示的变量名,那么该函数的return语句可以省略操作数。这称之为bare return。在Go中,错误处理有一套独特的编码风格。检查某个子函数是否失败后,我们通常将处理失败的逻辑代码放在处理成功的代码之前。如果某个错误会导致函数返回,那么成功时的逻辑代码不应放在else语句块中,而应直接放在函数体中。Go中大部分函数的代码结构几乎相同,首先是一系列的初始检查,防止错误发生,之后是函数的实际逻辑。函数定义时,可以使用函数类型...阅读全文

博文 2016-03-28 08:00:00 tianyajuanke

go:匿名函数与闭包

一、匿名函数 定义:没有函数名的函数。 作用:在go语言中目前了解的作用就是用于构成闭包。 *注:由于js不存在块级作用域,故匿名函数常用来包含代码以不污染全局命名空间,运行后销毁环境。 ----来自知乎回答:http://www.zhihu.com/question/34649602 使用方法及其原理请参考:http://www.cnblogs.com/chenxianbin89/archive/2010/01/28/1658392.html 使用举例 (1) a := func() { fmt.Println(1) } a() //输出:1 (2)带参数 b := func(arg int) { fmt.Println(arg) } b(2) //输出:2 (func(arg int) ...阅读全文

博文 2015-10-23 03:00:06 xiaopipi

golang

概述 golang is a better C and a simple C++ golang主要特性 1、语法简单 舍弃语法糖,严格控制关键字 C++语法糖之多,令人发指,而C又太过于底层,容易出现自己造轮子的情况,如何在两者之间取舍,是每一个转向golang的工程师曾经思考过的问题。 golang的出现,就是在C和C++之间的刚刚好的取舍。 2、垃圾回收 golang支持垃圾回收,相比C/C++是一大进步。 c + +由于存在指针计算,即p++、p--等,无法提供垃圾回收功能,而golang虽然有指针,但是舍弃了指针的++、--等操作,所以提供了垃圾回收功能。 标记清除 3、错误处理 报告普通错误+报告致命错误 C语言中错误处理并不是语言规范的一部分,只是提供了errno这种系统相关的错...阅读全文

博文 2017-07-11 14:07:40 zengfan

golang 模板(template)的常用基本语法

golang 模板(template)的常用基本语法 模板 在写动态页面的网站的时候,我们常常将不变的部分提出成为模板,可变部分通过后端程序的渲染来生成动态网页,golang提供了html/template包来支持模板渲染。 这篇文章不讨论golang后端的模板读取及渲染方法,只讨论模板中嵌入变量,渲染变量、循环等一些基本用法。 变量 在golang渲染template的时候,可以接受一个interface{}类型的变量,我们在模板文件中可以读取变量内的值并渲染到模板里。 有两个常用的传入参数的类型。一个是struct,在模板内可以读取该struct域的内容来进行渲染。还有一个是map[string]interface{},在模板内可以使用key来进行渲染。 我一般使用第二种,效率可能会差一...阅读全文

博文 2016-09-08 12:00:03 sryan

golang读取关闭channel遇到的问题/如何优雅关闭channel

#核心内容: 已关闭的channel再次读取会出现什么现象? 如何判断channel关闭? 什么是nil channel有什么用? 先看看出问题的代码片段(抽象精简): func TestReadFromClosedChan(t *testing.T) { asChan := func(vs ...int) <-chan int { c := make(chan int) go func() { for _, v := range vs { c <- v time.Sleep(time.Duration(rand.Intn(1000)) * time.Millisecond) } close(c) }() return c } merge := func(a, b <-chan int) <...阅读全文

博文 2018-04-10 18:33:06 DJZhu

GO代码实现判断字符编码格式及编码格式转换(utf-8、gbk)

引入 最近使用go开发http服务,在使用http进行通信时,发现接收报文中如果包含中文字符(非utf-8编码),直接使用go将二进制格式数据转换成字符串文本会出现乱码的情况。因为golang中的字符编码格式是utf-8,如果是其他类型的编码,例如gbk,那么直接转码后出现乱码也就理所当然了。 GBK编码格式 为了更好地说明GBK的编码方式,首先在这里先说明一下ASCII码,GB2312, GBK, GB18030的兼容性关系: 各种编码兼容关系.png ASCII编码使用一个字节的低7位(范围0-127)来表示共128个字符,最高位为0,即 0XXX_XXXX GB2312为了能表示更多字符,使用单字节和双字节来进行编码,单个字节编码与ASCII完全一样,也就兼容了ASCII码,双字节编码...阅读全文

Go正则表达式regexp示例大全

// 判断在 b 中能否找到正则表达式 pattern 所匹配的子串 // pattern:要查找的正则表达式 // b:要在其中进行查找的 []byte // matched:返回是否找到匹配项 // err:返回查找过程中遇到的任何错误 // 此函数通过调用 Regexp 的方法实现 func Match(pattern string, b []byte) (matched bool, err error) func main() { fmt.Println(regexp.Match("H.* ", []byte("Hello World!"))) // true } 123456789101112 // 判断在 b 中能否找到正则表达式 pattern 所匹配的子串// pattern...阅读全文

博文 2018-01-06 15:50:01 john

golang interface用法

接口是一个或多个方法签名的集合,任何类型的方法集中只要拥有与之对应的全部方法,就表示它"实现"了该接口无须在该类型上显式添加接口声明。 所谓对应方法,是指有相同名称、参数列表 (不包括参数名) 以及返回值。当然,该类型还可以有其他方法。(1)接口命名习惯以er结尾结构体。(2)接口只有方法签名,没有实现。(3)接口没有数据字段。(4)可在接口中嵌入其他接口。(5)类型可实现多个接口。 下面举个栗子:用例:一个人,他的有两种角色,在公司是程序猿,在家里是孩他爸。在公司当程序猿时就写bug,在家当爹时就洗尿布。则其接口和结构体的映射关系为: package main import "fmt" type CodeMonkey interface { codingEveryday() string ...阅读全文

博文 2014-10-04 19:27:27 Estone

golang大量字符串拼接方法

虽然方便,但是使用+=操作符并不是在一个循环中往字符串末尾追加字符串最有效的方式,一个有效的方式是准备好一个字符串切片([]string),然后使用strings.Join()函数一次性将所有字符串串联起来。但是在go中还有一个更好的方法,其原理类似于java中的stringBuilder package main import ( "bytes" "fmt" ) func main() { var buffer bytes.Buffer //Buffer是一个实现了读写方法的可变大小的字节缓冲 for { if piece, ok := getNextString(); ok { /* func (b *Buffer) WriteString(s string) (n int, err e...阅读全文

博文 2018-01-04 22:33:04 coder_kev

golang语法总结(八):类型零值、类型别名、类型转换

类型零值 变量声明为某种类型后的值就为该类型的零值,它不是空值。通常数值类型默认为0,bool为false,string为空字符串 类型别名 比如: type text stringfunc main() { var t text = "hello world" fmt.Println(t)} 类型转换 Go语言不存在隐式转换,必须显式转换,并且只能在两种相互兼容的类型间转换,转换示例: a := 3.14b := int(a)fmt.Println(b)var c int32 = 256var d = float64(c)fmt.Println(d...阅读全文

博文 2016-02-22 14:00:07 QQ245671051

golang中map的值引用问题

先给出一个例子 package mainimport ( "fmt")type string_map map[string][]stringfunc main() { map1 := make(string_map) map1["one"] = []string{"one"} //先赋值 one := map1["one"] //把赋值的映射使用一个变量表示 one = []string{"two"} //给这个变量赋另外的值 fmt.Println(one) fmt.Println(map1)} 结果如下: [two]map[one:[one]] 问题出现了,当使用一个变量来表示map里面的映射时,是类似于值引用的方式,变量的改变不影响map里面映射的值 所以这里需要注意了,这里golan...阅读全文

博文 2014-10-04 19:26:02 ssor

go-logging的使用

logging包实现了Go的日志记录基础设施。 其输出格式是可自定义的,并支持不同的日志后端,如syslog,文件和内存。 可以使用多个后端,每个后端和记录器具有不同的日志级别。 这是官方的例子: package main import ( "os" "github.com/op/go-logging" ) var log = logging.MustGetLogger("example") // Example format string. Everything except the message has a custom color // which is dependent on the log level. Many fields have a custom output // f...阅读全文

博文 2017-09-01 06:31:03 code_segment

北京招聘golang工程师

工作地点: 北京市通州区马驹桥环科中路16号66号楼2层 待遇福利: 包吃包住.衣食无忧 24寸大宽屏显示器(竖屏 代码专用) 还有详谈....... 岗位要求: 有2年及以上开发工作经验(如果优秀可以发github or code) 熟悉Linux工作环境,熟悉MySql、Redis等数据库编程,golang能够独立开发 熟悉网络协议,Socket协议 具有高负载、高并发开发设计经验值者优先考虑 拥有扎实的计算机编程能力,尤其在数据结构、算法和代码、软件设计方面有较好的功底 工作积极主动、擅于思考问题,能够主动沟通与解决问题 职位描述: 参与并负责公司服务端开发(linux + golang) 公司名称: 北京微梦灵动科技有限公司 邮件...阅读全文

go是函数式编程语言吗?

2012-05-19 翻译自这里, 对原文有所扩展, 也有所删减. go是函数式编程语言吗? 不是, 当然不是. 那么, go提供函数吗? 是的, 当然, 大多数编程语言都提供函数, go也不例外. 不相信吗? 我会用代码让你闭嘴: func SayHello() { fmt.Println("Hello") } 看见了吧. go使用关键字func定义函数, 并在函数体中编写函数逻辑. go函数可以接受参数吗? 嗯, 我又看到一个白痴的问题, 呵呵. 哦, 我懂了, 也许是我的SayHello函数给大家造成了错觉, 我会改造我的代码: func SayHelloToSomeone(name string) { fmt.Println("Hello " + name + ".") } 函数Sa...阅读全文

博文 2014-10-04 19:26:45 cool-xing

goLang异常处理

defer defer是go提供的一种资源处理的方式。defer的用法遵循3个原则在defer表达式被运算的同时,defer函数的参数也会被运算。如下defer的表达式println运算的同时,其入参i也会被运算,结果为初始化值0,故defer调用中会打印“0” func a() { i := 0 defer fmt.Println(i) i++ return defer函数在一个函数return之后遵循后进先出的调用原则,如下打印结果为3210 func b() { for i := 0; i < 4; i++ { defer fmt.Print(i) } } defer函数可能会读取并赋值给所在函数的返回值,如下返回值为2 func c() (i int) { defer func() ...阅读全文

博文 2018-07-16 12:34:49 一个简单搬运工

阿里云校园公益极客大赛正式启动公益+科技+未来,打造不一样的校园赛事

2017年10月12日杭州云栖大会阿里云大学专场上,阿里云宣布启动“阿里云校园公益极客大赛”。本次大赛由阿里云大学、码上公益联合国内各大高校及合作伙伴慧科集团共同举办。阿里云客户服务部总经理、码上公益项目发起人张颖杰,阿里云大学总经理王晓斐,上海立信会计金融学院副校长顾晓敏及慧科集团CEO岳喜伟参与了发布仪式,数百位与会高校代表共同见证了此次发布。 发布会上,阿里云客户服务部总经理、码上公益项目发起人张颖杰提到:“我们走访了很多公益组织,他们都希望把自己的公益能力和公益温暖更多的传递出来。然而绝大多数公益组织苦于缺乏自身的代码能力、运维能力和运营推广能力。 我们市场内有大量的IT、云计算科技人员,他们大都怀着用技术能力去为公益贡献自身力量的热忱之心。如何将公益组织对科技、对...阅读全文

年中记录与挖坑

记录李航大佬说过(原文链接) 计算机上达到和人同等的对话能力还非常困难。现在的技术,一般是数据驱动,基于机器学习的。 单轮对话有基于分析的,基于检索的,基于生成的方法。 好吧, 我也感觉基于检索的是low的, 但是现在各家智能音箱貌似都没有突破这个坎. 大家听到的siri的b-box, 背后是一个无聊的逗逼程序员; 小爱同学的惊人语录, 写语料也许是一群抠脚大汉. 这半年的工作, 主要集中在开发一个基于检索的语义理解平台, 最近几天刚刚完成了第三版的进化. 初代目 去年年底, 刚来这里接手这项工作的时候, 老大给我的架构是简单的纯检索, 基于ES, 把事先编好的模板写到搜索引擎里. 每次收到前台请求, 将asr获得的文本扔到ES里搜, 一开始模板量比较少的时候, 分类效果挺不错的, 甚至还有...阅读全文

博文 2018-09-01 16:35:00 MashoO

阿里云云翼计划——学生党 9.9 /月,续费同价

![9.9元学生机.jpg](http://studygolang.qiniudn.com/150916/3df507803b53834772eb5d4cd32e88f7.jpg) 地球上有一种行为叫YY, 扎克伯格,大二的时候YY想要创立社交网站,于是就有了脸书; 比尔盖茨,20岁的时候YY决心投身计算机行业,于是就有了微软; 陈欧,大学期间靠着YY的信念和鱼丸粗面,创立了聚美; 王兴,大学期间的大学霸,更是YY着创造了校内/饭否/美团的互联网三大杀器; 而你,同样是一名大学生,相信你也有许多YY的突发奇想; 别担心,趁年轻,YY吧!也许下一秒就是你的突发奇想改变了世界! 而阿里云云翼计划就是成就你不同凡“想”的好机会:http://clic...阅读全文

Java构造函数与Go构造函数的不同

因为Java的构造函数是不需要返回值的,所以一般是参数较多的构造函数调用参数较少的构造函数,然后继续赋值。 比如: public Student(String name){ this.name = name ; this.age = 10 ; } public Student(String name , int age ){ this(name) ; this.age = age ; } 而Go语言需要返回值,所以经常是参数较少的调用参数较多的构造函数,在调用时传入一个默认值。 所以代码可能是这样: func NewStudentWithAge(name string , age int) *Student{ return &Student{name :name,age :age } ; }...阅读全文

博文 2015-01-21 22:00:01 itfanr

Go 根据字符串调用指定函数

随学随记,留备查 1、初学web设计,暂不想使用第三方库;于是乎HandleFunc()写的满屏都是……就想着模拟MVC思想,根据URL的路径自动调用指定的控制器方法,岂不是很好; 2、尝试使用Go的反射功能,初步实现了原理算法; 3、需要引入“reflect”包,使用reflect.ValueOf()方法,这里必须传入参数地址,否则其返回的reflect.Value类型只能查询到静态声明的方法,不能得到动态绑定的方法; 4、即使传入参数地址,其返回的reflect.Value类型,也得不到方法名;Go的意思应该是值和类型分开处理,在类型里面才有名称等信息; 4、需要再次调用返回值的Type()方法,这样就可以查询方法名称; 5、然后将方法名称和方法指针存入Map中,后续通过Map[name...阅读全文

博文 2016-08-13 22:00:06 HOOKTTG

微服务组件之限流器与熔断器

在微服务架构里面一个很常见的问题就是服务之间的延迟和通信失败问题,极端的情况下,甚至会因为某个服务的性能下降或者故障宕机,导致访问超时,层层传递,引发雪崩,最终导致整个系统崩溃,而限流器和熔断器(这两个组件都是客户端的)能很好的解决这个问题,提高系统的可靠性和稳定性 限流器 限流器,从字面上理解就是用来限制流量,有时候流量突增(可预期的比如“双11”,不可预期的微博的热门话题等),会将后端服务压垮,甚至直接宕机,使用限流器能限制访问后端的流量,起到一个保护作用,被限制的流量,可以根据具体的业务逻辑去处理,直接返回错误或者返回默认值等等 golang 提供了拓展库(golang.org/x/time/rate)提供了限流器组件,用法上也很简单直观,通过下面这段代码就可以创建一个限流器 // 每...阅读全文

博文 2018-06-21 18:34:39 hatlonely

go的语言特性总结

Go的语言特性总结 写在前面: 近来关于对Golang的讨论有很多,七牛的几个大牛们也断定Go语言在未来将会快速发展,并且很可能会取代Java成为互联网时代最受欢迎的编程语言。Go语言是google推出的编程语言,在已经成功的给世人创造了改变人们生活的操作系统之后,google似乎感觉有必要再为世人带来一款强大的编程语言,而Go语言依靠自己众多友好的特性也不负众望正在被开发者接触,我有幸在学习高性能并发编程的时候认识了Go语言,在了解了Go的一些特性之后决定系统的学习一番。我发现关于Go的学习资料并不多,以至于我需要自己写一些东西。这里的内容大多来自七牛团队的《Go语言编程》一书。这里也会按照书中组织的章节进行学习。当然如果一些知识点事互联网上已经有的,这里直接进行转载了。 -Written...阅读全文

博文 2016-03-13 22:00:02 qq_15437667

真正毕业版本=「匹兹堡大学毕业证书」PITT证书原版一模一样

匹兹堡大学毕业证书【 微/Q:939665009 —— WeChat:939665009】PITT毕业证书/美国匹兹堡大学毕业证书/联系人Ann代办国外(海外)澳洲 加拿大 韩国 美国 新西兰 等各大学毕业证书,修改成绩单分数,留信认证,文凭,diploma,degree [删除请点击百度快照]真实认证.海外回囯的同学定制毕业证书、真实认证、毕业证书、学位证书、使馆公证、囯外真实学位认证、使馆留学回囯人员证明、录取通知书、Offer、在读证明、雅思托福成绩单、网上存档永久可查![实体经营,,值得信赖]十五年致力于帮助留学生解决无法毕业,无法认证真实的难题;并帮助留学生制作国外大学毕业证书(微 Q:939665009),成绩单,真实认证、成绩单以及回国所需的真实学位真实认证。 美国匹兹堡大学毕...阅读全文

[golang note] 匿名组合

匿名组合 golang也提供了继承机制,但采用组合的文法,因此称为匿名组合。与其他语言不同, golang很清晰地展示出类的内存布局是怎样的。 • 非指针方式组合 ▶ 基本语法 // 基类 type Base struct { // 成员变量 } func (b *Base) 函数名(参数列表) (返回值列表) { // 函数体 } // 派生类 type Derived struct { Base // 成员变量 } func (b *Derived) 函数名(参数列表) (返回值列表) { // 函数体 } ▶ 继承规则 √ 在派生类没有改写基类的成员方法时,相应的成员方法被继承。 √ 派生类可以直接调用基类的成员方法,譬如基类有个成员方法为Base.Func(),那么Derived.F...阅读全文

博文 2016-03-10 09:00:01 heartchord

Golang中如何模拟C语言中的if(scanf(…)==EOF)来控制输入的终止

相信很多从C/C++转到Golang的朋友们都经常会对Go中的输入控制感到头疼。。。尤其是如果要在Go中模拟C语言中的如下代码会遇到不小困惑: char input[100]; while (1) { if (scanf("%s", input) == EOF) { printf("输入结束\n"); break; } } 上面这段代码在控制台中输入一个Ctrl+Z(EOF) 就可以终止输入了: C语言中的 int scanf() 函数返回的是一个int类型,它的值只有三种情况: (1) 如果一切正常,返回输入的字符个数,即值>0 (2) 如果出现错误,返回0 (3) 如果遇到结束符EOF,返回-1 注意第三条:遇到结束符会返回-1,这样就会结束输入。也就是说,如果我们输入EOF(EOF其实...阅读全文

博文 2014-10-21 20:00:01 u011774512

golang 基础(5)函数的返回值

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 语言是比较严格语言 strict-inspection.jpg a, b := div(17,3) fmt.Println(a) 应该修改为,通过 _ 占位符来忽略掉不使用的变量 a, _ := div(17,3) fm...阅读全文

golang 调用 c++ DLL 如何获取 dll 返回的 string 类型值

我用 golang 调用 c++ dll,调用成功,传值成功(代码省略其他无用的,仅细节代码): ``` inst := syscall.MustLoadDLL("test.dll"); some_func := inst.MustFindProc("test_function"); s1: = "aaa" // 传递参数给 c++ dll s2:= "bbb" // 传递参数给 c++ dll s3:="" // 我希望从这个参数得到返回值 some_func.Call( uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(s1), uintptr(u...阅读全文

游戏答题神器qanswer

答题神器:《冲顶大会》,《百万英雄》等答题游戏的答题神器,顺利吃鸡! 通过抓取手机屏幕截图经过文字识别,结合搜索引擎给出一个参考值。 [![题目](https://github.com/silenceper/qanswer/raw/master/docs/screenshot.png)](https://github.com/silenceper/qanswer/blob/master/docs/screenshot.png) 分析结果: [![结果](https://github.com/silenceper/qanswer/raw/master/docs/answer.png)](https://github.com/silenceper/qanswer/blob/master/...阅读全文

gossdb终于可以全速前进了

用了一周的时间才最终找到了一个会在大并发(并发1000,mbp普通本)下可能会发生的空指针问题,现在经过多次测试,终于可以关闭这个bug了。哈哈,高兴啊。 现在的gossdb已经相对成熟了,而且用的人也越来越多了,希望在这里介绍给大家,如果有人用ssdb,不妨尝试一下,会有惊喜的。 下面简单的介绍一下gossdb https://github.com/seefan/gossdb 功能列表 1. 继承官方连接方式。已支持超过40个官方命令。 2. 支持连接池。 3. 已支持 set 相关方法 4. 已支持 hashmap 相关方法 5. 已支持 queue 相关方法 6. 已支持返回值类型转换,可以方便的把从ssdb中取到的内容转化为指定类型。 连接池已支...阅读全文

2018.9.4 最神秘的数字货币交易所

因为最近币价凉凉,所以我许久没有关注币圈了,今天打开交易所的交易额排名一看,在第一的榜单上出现了一个陌生的名字:币夫。币夫究竟是何方神圣?带着疑问,我查阅了一些资料,发现这是一家低调又神秘的交易所。17年成立于新加坡,创始人具体是谁也不知道,这点和国内很多交易所的高调作风真的是很不一样,但有传闻团队成员素质超高,平均学历在硕士以上,来自美林证券、世界银行、麦肯锡、微软、腾讯等全球知名公司。仅仅成立一年多的时间,就能顶着熊市的压力,迅速成为交易额第一的数字货币交易所,着实给力!据说,币夫有很多优秀的海外项目,特别是硅谷的明星项目,由于在上币方面他们非常严格,所以确实筛选了不少优秀项目,这样也是很大程度上减少了用户的投资风险。币夫的强势崛起,其实很值得我们思考。区块链这个行业,远还没到分胜负的时...阅读全文

博文 2018-09-04 21:25:07 kelasong

Tango,微内核可扩展的Go语言Web框架

转自 [lunny的博客](http://lunny.info/2015/01/07/1-Tango-micro-and-pluggable-web-framework-for-Go.html) # 简介 Golang的web框架基本上处于一个井喷期,那么为什么要再造一个轮子。这是因为,目前可扩展性比较强的都是基于函数作为可执行体的,而以结构体作为执行体的框架目前可扩展性都不够强,包括我原先写的框架xweb也是如此。因此,一个全新的框架出来了,先上地址:[https://github.com/lunny/tango](https://github.com/lunny/tango)。 初看Tango框架,感觉和Martini及Macaron非常的像。比如这段代码: ``...阅读全文

redigo设置超时时间

如果你不传入timeout的值,那么默认0值的话,这两个set deadline的逻辑就跳过了。。。如果不设置read/write timeout 会导致什么问题呢?假如网络有波动,执行一个redis 命令的时候,一直没收到服务器的响应,会导致这次请求一直没有返回,晾在那。直到redis服务器设置的超时时间到了,关闭连接,然后就会读到一个EOF的错误。单点redis的情况,如果不设置MaxActive,redispool的连接数是没有上限的,问题就不会暴露出来,这对我们的服务来说,影响也不大,就是在错误日志中,会多几条redis相关的EOF日志,但是这样真的没问题么?当然有问题,如果是从redis读消息,没有设置read timeout,一直读不到,这个协程就卡在那,迟迟不给响应,对用户来说...阅读全文

博文 2018-10-19 18:34:42 Michael_001

go语言中var

go语言中定义变量使用关键字var,如:var x int=4 也可以写成x:=4; 在函数中,:= 简洁赋值语句在明确类型的地方,可以用于替代 var 定义。 (:= 结构不能使用在函数外,函数外的每个语法块都必须以关键字开始。) package main import ( "fmt" ) func main() { var x int = 4 fmt.Println(x)//输出4 fmt.Println(&x)//输出指针 //fmt.Println(*x) //错误 y := 4 fmt.Println(y)//输出4 fmt.Println(&y)//输出指针 //fmt.Println(*y) //错误 var v *int = new(int)//返回值为指针 fmt.Prin...阅读全文

go 语言实现通用单链表

## 链表定义 ### 定义错误 ```go import "errors" var ( //ErrIndex 超出列表索引 ErrIndex = errors.New("out of list index") //ErrNotFound 没有找到该元素 ErrNotFound = errors.New("not found this element") ) ``` ### 定义接口 ```go // Comparer 数据接口 type Comparer interface { compare(data interface{}) bool } ``` ### 定义链表结点 ```go // SingleElement 列表结点 type SingleElement struct { Dat...阅读全文

博文 2019-07-17 09:19:21 daymenu

Go语言接口开发——不确定JSON数据结构的解析

在公司主要做接口的开发,会经常遇到接口对接的情况。有的时候,同一个请求返回的JSON数据格式并不一样。如果是正常,则可能只返回一个status字段,说明正常;如果中间出错,除了在status字段里面说明错误类型,还会通过error_message附带错误详细信息。比如要给用户加积分,如果加分失败,还会附带用户id等信息。那么,请求一个接口可能的返回值就是不确定的。 我最初就是定义两个结构体,我处理的数据都共有一个字段status,如果能够解析并且status表示操作成功,那么用封装成功内容的结构体解析;否则,用封装失败的结构体解析。这就是传说中的DIRTY HACK。。。 后来,偶然发现封装正确的结构体也会解析错误的字符串,当然,只会解析共有字段。那么,这个问题就好解决多了。把两个结构体放到...阅读全文

GO代码实现判断字符编码格式及编码格式转换(utf-8、gbk)

# 引入 C/C++的实现请看[https://www.jianshu.com/p/a83d398e3606](https://www.jianshu.com/p/a83d398e3606) 最近使用go开发http服务,在使用http进行通信时,发现接收报文中如果包含中文字符(非utf-8编码),直接使用go将二进制格式数据转换成字符串文本会出现乱码的情况。因为golang中的字符编码格式是utf-8,如果是其他类型的编码,例如gbk,那么直接转码后出现乱码也就理所当然了。 --- # GBK编码格式 为了更好地说明GBK的编码方式,首先在这里先说明一下ASCII码,GB2312, GBK, GB18030的兼容性关系: ![各种编码兼容关系.png](https://upload-ima...阅读全文

博文 2019-11-20 16:23:24 bubbleGarden

fmt包的Println,Printf和Sprintf的区别

fmt包实现了格式化的I/O,其功能类似于C的printf和scanf。这是官网给出的解释。 **Println:** 1. 用默认的类型格式显示方式将传入的参数写入到标准输出里面(即在终端中有显示), 2. 多个传入参数之间使用空格分隔, 3. 在显示的最后追加换行符, 4. 返回值为 写入标准输出的字节数和写入过程中遇到的问题。 **Printf:** 1. 用传入的格式化规则符将传入的变量写入到标准输出里面(即在终端中有显示), 2. 返回值为 写入标准输出的字节数和写入过程中遇到的问题。 **Sprintf:** 1. 用传入的格式化规则符将传入的变量格式化,(终端中不会有显示) 2. 返回为 格式化后的字符串。 ``` go testStr := []byte("test str"...阅读全文

博文 2018-11-08 09:49:02 lijingtian

Go语言defer的使用

载:http://cloudnil.com/2014/05/19/defer-in-go/ Go语言中没有类似于java中的try…catch…finally的语句块,但是却有一个非常优雅的defer。 defer关键字用来标记最后执行的Go语句,一般用在资源释放、关闭连接等操作,会在函数关闭前调用。 多个defer的定义与执行类似于栈的操作:先进后出,最先定义的最后执行。 在defer的使用中,碰到过许多坑,尤其是在defer与匿名函数搭配使用的时候,本文就来讲讲这些坑。 请先看下边几段代码,然后判断一下各自输出内容: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32...阅读全文

博文 2015-04-16 13:00:05 yugongpeng_blog

[go语言]使用defer和有名返回值,实现初始化失败的自动回滚

稍微复杂一些的程序的初始化会涉及到多个模块,任何一个模块初始化失败以后,就应该把已经初始化的其他模块一一回滚。这容易使得初始化的错误处理比较冗长,包含重复代码;或者执行路径跳转不容易读懂,也容易出错。用go语言提供的defer和有名返回值的机制,可以比较容易地解决这个问题,让初始化错误处理简洁清晰。 先看看一种常见的错误处理代码: func Initialize() error { var err error err = init_a() if err != nil { return err } err = init_b() if err != nil { uninit_a() return err } err = init_c() if err != nil { uninit_b() un...阅读全文

博文 2014-10-28 18:43:18 stevewang