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

go反射之后接口断言问题

这个问题困扰了我一晚上,但是最终还是被我试出来了。 问题场景: 1.我通过反射获取一个指针的value v := reflect.ValueOf(ptr).Elem() 这个指针指向了一个结构体,因为是指针所有我用了Elem()函数获取了指向的值。 2.因为ptr指针指向的结构体实现了一个接口,所以我用接口断言方法来调用接口的函数。 if _,ok := v.Interface().(XXX);ok{ ... } XXX是我实现的接口,看起来一切都没问题,但是问题来了。 //我用一个接口接收ptr的值 var i interface{} i = ptr if _,ok := i.(XXX);ok{ //ok为true ... } 如上所示,我用反射之前,接口断言没问题。但是v.Interfa...阅读全文

博文 2016-10-11 03:01:26 i冬瓜

golang分解http GET字符参数串到map

来了一串字符串,类似于http GET的URL参数串。不知道"net/url"能解http://www.pic98.com/srs?sessionid=22222&token=3333 这样的串。但是能不能分解 ?sessionid=22222&token=3333 这样的串没试过。其实自己构造个解析也很快的。上代码。 func uri2map(uri string) (map[string]string, error) { m := make(map[string]string) if len(uri) < 1 { // 空字符串 return m, errors.New("uri is none") } if uri[0:1] == "?" { // 有没有包含?,有的话忽略。 uri ...阅读全文

博文 2019-04-04 12:34:39 毛毛v5

一条命令即可将 Vim 配置为功能强大的 IDE

一条命令即可将 Vim 配置为功能强大的 C/C++ IDE 。包括安装不太方便的 YouCompleteMe 插件也是自动安装,并且会自动从官网下载最新版本的 libclang,然后编译 YouCompleteMe 插件需要的 ycm_core library ,这或许是目前为止安装 YouCompleteMe 插件最简单的姿势。 安装: curl -o - https://raw.githubusercontent.com/HmyBmny/vimrc/master/install-vim-plugins | sh 部分插件的使用需要安装一些依赖,诸如 ctags 之类的,具体请参考:https://github.com/HmyBmny/vimrc 支持所有 Linux 平台, Mac 没...阅读全文

博文 2017-02-10 10:27:20 HmyBmny

19年第34周:Go 我没对象

一、前言 Unix 一切皆文件 C++/Java/Python 一切皆对象 Golang 一切皆类型 二、Go为什么没对象? Go没对象,为什么呢?这个好难回答,不如换个问题:“You 为啥没对象?” 哈哈,开玩笑,我不知道。 三、为什么要有对象呢?不要对象不行么? 用C的时候,嗯,没有对象是很正常的。 学C++的时候,第一堂课,就是:“恭喜在座的各位,你们开始有对象了。”从此,对象是必须的。 学Go的时候,啥,没对象,没对象怎么过,没法活了。 四、没对象怎么办? 没对象,又想要原来那种有对象的日子,怎么办? 好说好说,那就是假装自己有对象 Go可以通过类型的组合来表现出让自己有对象。 这就好比,好多年前啊,一哥们给我返会一个bool类型,在他的语法里,假是 false, 真是 true,我...阅读全文

博文 2019-08-23 04:32:44 习惯研究所所长

go反射之后接口断言问题

这个问题困扰了我一晚上,但是最终还是被我试出来了。 问题场景: 1.我通过反射获取一个指针的value v := reflect.ValueOf(ptr).Elem() 这个指针指向了一个结构体,因为是指针所有我用了Elem()函数获取了指向的值。 2.因为ptr指针指向的结构体实现了一个接口,所以我用接口断言方法来调用接口的函数。 if _,ok := v.Interface().(XXX);ok{ ... } XXX是我实现的接口,看起来一切都没问题,但是问题来了。 //我用一个接口接收ptr的值 var i interface{} i = ptr if _,ok := i.(XXX);ok{ //ok为true ... } 如上所示,我用反射之前,接口断言没问题。但是v.Interfa...阅读全文

博文 2016-10-03 03:00:02 i冬瓜

安装goland编辑器

昨日在ubuntu系统中,安装了golang的环境,今天在安装一个比较好用的编辑器来写代码,会提高很大的效率。 ##### 首先从官网下载goland - https://www.jetbrains.com/go/download/#section=linux ##### 解压安装 tar -zxvf xxx.tar.gz sudo mv xxx /opt/goland ##### 建立别名,快速启动 ``` - sudo vim ~/.bashrc 添加 alias goland='nohup sh /opt/goland/bin/goland.sh >/dev/null >/dev/null 2>&1 &' 保存 source ~/.bashrc ``` 在命令行直接输入goland就可...阅读全文

博文 2019-08-19 21:56:27 sooseiy

1秒10亿数据! 阿里云日志服务再次升级

摘要: 日前,在“2017杭州·云栖大会”上阿里云宣布,日志服务与Splunk打通合作,同时面向亿级实时日志分析功能上线。兼容SQL92标准与JDBC协议,集中解决各类环境日志一站式需求,包括采集、存储、投递与查询分析等,将日志分析提升到全新高度,达到国内领先水平。 日常生活中人和物的活动会产生大量的数据,而日志是一种常用记录这类活动的载体。通过日志处理,分析可以帮助我们通过大数据找到背后的运作规律,做到业务的智能运维和运营。日志分析最终是拿到结果,但过程中往往需要通过软件(例如kafka、ELK、Flume)等组合搭建日志处理系统,这给使用日志分析工作带来很多问题和困扰。而阿里云日志服务是一种无托管的方案,无需用户关心琐碎的数据采集、扩容、维护、错误处理等工作,将精力集中投入在“分析...阅读全文

谁说c语言和c+太难?没前途?谬论!

​因为有些对C++并不了解,所以就简要介绍一下。很多人对C++语言都存在误解,以为C++就是C语言的扩展,包括我自己,最开始学习C++时也是这么认为的,一是因为名字太像了,然后C++面向过程部分,基本上如出一辙,各种思想基本一致,也难怪初学者会这么想。然后后面多了面向对象部分以及一些其他高级的内容,所以就理所当然的认为是C语言的扩充,直到深入学习后,也看到了大师们的看法,结合自己的思考,才真的体会到这种误解了。​C语言的灵魂是指针,掌握指针,C语言你可以说是学会了。但是,C++中,指针只不过是其中很小的一部分,我们不能否认指针在C++的重要性,但是,指针已经不是C++的核心了,而只是基础的部件而已。从这来看,C++确实不是C语言的扩展了。C++是借鉴了C语言,从C语言发展而来,但是C++走的...阅读全文

博文 2019-01-17 16:49:08 gaohuan123

Go 入门基础

前言 seaconch 最近在学习 Go 语言编程,基础部分还没有看完,不过只看不练,或者之过一遍还是感觉不够牢固,所以决定通过文章来记录、并且梳理一下已了解过的知识。 一.Go基础结构 1.基础 Go 编写的代码文件都以 .go 结尾。 这里假设我们有一个名为: main.go 的文件。 那想要将 main.go 生成一个可执行的应用程序,至少要是如下内容 : package main func main() { } 编译生成 go build main.go 是可以通过的,成功的生成了 main.exe 。 只是这样做并没有任何意义,所以说真正意义上我们要编写一个 Go 程序 至少是下面这样的 : package main import "fmt" func main() { fmt.P...阅读全文

博文 2018-07-07 23:34:52 SeaConch

Hashmap

基本语法 定义hashmap变量 由于go语言是一个强类型的语言,因此hashmap也是有类型的,具体体现在key和value都必须指定类型,比如声明一个key为string,value也是string的map, 需要这样做 var m map[string]string // 声明一个hashmap,还不能直接使用,必须使用make来初始化 m = make(map[string]string) // 初始化一个map m = make(map[string]string, 3) // 初始化一个map并附带一个可选的初始bucket(非准确值,只是有提示意义) m := map[string]string{} // 声明并初始化 m := make(map[string]string) ...阅读全文

博文 2018-11-25 16:34:40 小马哥_Magical

基于Mixin Network的Go语言比特币开发教程 : 用 Mixin Messenger 机器人接受和发送比特币

基于Mixin Network的Go语言比特币开发教程 : 用 Mixin Messenger 机器人接受和发送比特币 在 上一篇教程中, 我们创建了自动回复消息的机器人,当用户发送消息"Hello,World!"时,机器人会自动回复同一条消息! 按本篇教程后学习后完成后,你的机器人将会接受用户发送过来的加密货币,然后立即转回用户。完整代码如下: main.go fpackage main import ( "context" "encoding/base64" "encoding/json" "log" "github.com/MooooonStar/mixin-sdk-go/messenger" mixin "github.com/MooooonStar/mixin-sdk-go/net...阅读全文

博文 2019-03-04 13:34:39 Mixin_Network