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

GoLang学习 -- array(数组)和slice(切片)

在使用golang过程当中,经常会用到数组类型。可在查看golang官方文档中发现,在golang语言当中,除了存在数组类型之外,还存在有切片类型。这个切片类型在其他语言都没有出现过,那么这个切片类型到底是一种什么类型呢?切片和数组又有什么区别? 下面就谈谈在golang中数组和切片的故事。 首先我们看一下数组: golang中的数组是一种由固定长度和固定对象类型所组成的数据类型。例如下面: var a [4]int a[0] = 1 i := a[0] // i == 1 a是一个拥有4个int类型元素的数组。当a一旦被声明之后,元素个数就被固定了下来,在a这个变量的生命周期之内,元素个数不会发生变化。而此时a的类型就是[4]int,如果同时存在一个b变量,为[5]int。即便两个变量仅仅...阅读全文

博文 2015-09-26 20:00:48 vikings_1001

Go中运用chan的简单案例

开发环境:windows7 64位、编辑器:sublime text3 简要说明:Go中可以创建有缓冲的chan(比如: c1:=make(chan int,4)就是缓冲区大小为4的chan了 ),也可以创建没有缓冲的chan(比如: c2:=make(chan int)就是没有缓冲的chan)。 代码如下,代码中有注释: package main import ( "fmt" ) func main() { c := make(chan int, 2) //创建带有缓冲的chanel,缓冲大小是2 //这样调用函数,那么f1和f2就是并发执行了 go f1(c) //将参数c传递给f1() go f2(c) //将参数c传递给f2() c1 := <-c c2 := <-c //main函...阅读全文

博文 2015-11-14 09:00:01 汉斯-冯-拉特

Go语言实现将[]string转化为[]byte

Go语言实现将[]string转化为[]byte 假设你想实现Go语言的string数组到byte数组的转化。演示函数如下所示: func convertStringsToBytes(){ stringContent := []string{"通知中心","perfect!"} byteContent := "\x00"+ strings.Join(stringContent, "\x02\x00") // x20 = space and x00 = null fmt.Println([]byte(byteContent)) fmt.Println(string([]byte(byteContent))) } 完整代码: package main import ( "fmt" "string...阅读全文

博文 2016-05-22 18:00:00 GreatElite

LiteIDE 在 Windows 下为 Go 语言添加智能提示代码补全

本文以 Windows 7 64 位为环境,go1.4.2.windows-amd64 和 liteidex27.2.1.windows-qt5 为例。 成功搭建开发环境后,发现 LiteIDE 没有代码智能提示,这极为不方便啊~ 在 Github nfs/gocode 下载 gocode 源代码,重新编译成 exe 文件,覆盖 LiteIDE 的就行。 1,将下载的 gocode-master 解压,我放在了 C:\ 根目录下。 解压后内容如图 1 所示: 图 1 nfs/gocode 内容 2,在 Windows 命令行运行如下命令: C:\gocode-master>go build gocode.go autocompletecontext.go autocompletefile.g...阅读全文

博文 2015-05-19 03:00:11 liuning8023

Go的List操作上的一个小“坑”

一直想不清楚一个问题,简单设计的东西到底是“坑多”还是“坑少”呢? 复杂的设计,考虑的太全面,使用起来更麻烦,使用者容易陷入乱,落入自身的陷阱;而简单的设计呢,在许多方面上又顾及不周,如果使用者对其“设计”没仔细研究,或者其实现本身又是一个黑盒子,也容易掉入到设计本身遗留下来的“陷阱”。下面是我刚开始使用Go写代码时碰到的一个小“坑”,这个“坑”的原因我归结为后者。 这个“小坑”来自于go的container/list package的使用上。导致“坑”的代码大概如下所示: 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 package main import ( "container/list"...阅读全文

博文 2014-10-25 17:00:00 kjfcpua

微服务实践(七):从单体式架构迁移到微服务架构

【编者的话】这是用微服务开发应用系列博客的第七篇也是最后一篇。第一篇中介绍了微服务架构模式,并且讨论了微服架构的优缺点;接续文章讨论了微服务架构不同方面:使用API网关,进程间通信,服务发现,事件驱动数据管理以及部署微服务。本篇,我们将探讨将应用从单体式架构迁移到微服务架构需要考虑的策略。 @Container容器技术大会将于6月4日在上海光大会展中心国际大酒店举办,来自Rancher、携程、PPTV、蚂蚁金服、京东、浙江移动、海尔电器、唯品会、eBay、道富银行、麻袋理财、土豆网、阿里百川、腾讯游戏、数人云、点融网、华为、轻元科技、中兴通讯等公司的技术负责人将带来实践经验分享,5月7日之前购票只需438元,欢迎感兴趣的同学抢购。 希望读者通过本系列文章对微服务优缺点有一个比较好的理解,以及...阅读全文

博文 2016-05-11 10:46:15 hokingyang

Go--包引用介绍

最近在学习Go编程,本文简单的叙述如何在Go编程中使用包(包管理)。 和其他大多数语言一样,Go也存在包,并使用package关键字定义一个包。首先介绍在程序中如何引入包,引入包有以下几种方式: 1. 最简单的方式引入一个包的方式是直接引入包,例如: import "fmt" import "os" 2. 也可以通过下面的方式将包一块引入,并写在括号内: inport ( "fmt" "os" ) 通过上面的方式,可以引入系统包或第三方的包,下面重点介绍如何引入自定义的包和函数: 一般我们将主程序放在src的mian文件夹下(主程序中包含main函数,并将主程序的包名写为package main),将其他模块放在相应的文件夹下,例如下图所示 主函数在main.go文件中,主函数名也可以为其他...阅读全文

博文 2015-11-02 03:00:01 sunshiming

go总结

1.数组和切片 如果一个切片是使用一个数组进行初始化的,改变切片或者在切片后增加内容都会导致原数组的变化 这里,其实可以把切片理解为对数组的引用,所以切片元素的增删改,必然会影响数组 http://blog.csdn.net/marcky/article/details/7307985 2.struct 数据可以有匿名数据,这个功能类似于继承,匿名数据不需要变量,直接写类型即可 函数在struct外定义,若修改struct内数据,可以使用指针形式,如果不需要,声明一个即可 http://blog.csdn.net/chuangrain/article/details/9335041 3.make 和new都在堆中分配内存,但是他们却有很大不同 1.new(T)新建了T类型的item,将内存清...阅读全文

博文 2014-10-04 19:26:00 luan_tianjiao

beego框架——快速开发go应用的http框架

beego是一个快速开发Go应用的http框架,作者是SegmentFault 用户,go 语言方面技术大牛@Asta谢。beego可以用来快速开发API、Web、后端服务等各种应用,是一个RESTFul的框架,主要设计灵感来源于tornado、sinatra、flask这三个框架,但是结合了Go本身的一些特性(interface、struct继承等)而设计的一个框架。 beego的架构 beego的整体设计架构如下所示: beego是基于八大独立的模块之上构建的,是一个高度解耦的框架。当初设计beego的时候就是考虑功能模块化,用户即使不适用beego的http逻辑,也是可以在使用这些独立模块,例如你可以使用cache模块来做你的缓存逻辑,使用日志模块来记录你的操作信息,使用config模...阅读全文

博文 2015-11-10 18:00:01 u011032846

golang中container/list包中的坑

golang中list包用法可以参看http://blog.csdn.net/chenbaoke/article/details/42780895 但是list包中大部分对于e *Element进行操作的元素都可能会导致程序崩溃,其根本原因是e是一个Element类型的指针,当然其也可能为nil,但是golang中list包中函数没有对其进行是否为nil的检查,变默认其非nil进行操作,所以这种情况下,便可能出现程序崩溃。 1.举个简单例子,Remove()函数 package main import ( "container/list" "fmt" ) func main() { l := list.New() l.PushBack(1) fmt.Println(l.Front().Val...阅读全文

博文 2015-09-21 15:00:06 chenbaoke

golang逐行处理文件

golang 提供了package bufio。bufio.NewReader()创建一个默认大小的readbuf,当然,也可以bufio.NewReaderSize。 func NewReader(rd io.Reader) *Reader NewReader returns a new Reader whose buffer has the default size(4096). func NewReaderSize(rd io.Reader, size int) *Reader NewReaderSize returns a new Reader whose buffer has at least the specified size. If the argument io.Reade...阅读全文

博文 2015-08-25 22:00:01 冷絮

搭载在webstorm上的go语言开发插件安装

1. 2.搜索框内搜索go,单击“Browse repositories... ”没有匹配结果(因本人已安装好插件,所以go已经显示在上面了) 3.单击"Manage repositories...",在弹出的对话框里单击“+”(对话框内原本是空的),添加如图所示网址,即https://plugins.jetbrains.com/plugins/alpha/5047,单击“OK”。 4.此时搜索列表里就有go选项了,单击右侧的"Install plugin"按钮,即可安装,安装完成后重启webstorm。 5.再重启webstorm后,打开settings下的"Languages&Frameworks",若出现如图所示Go列表,即为安装成功...阅读全文

博文 2016-02-23 03:00:01 luoyishamai

Docker和Go的安装和使用

感觉现在的Docker就像2013年的Spark一样,势不可挡,因此很有必要对Docker进行深度学习。我们使用的操作系统为CentOS Linux release 7.2.1511 (Core)(64位)。主要介绍Docker的安装和使用,Go的安装和使用。 一. Docker的安装和使用 1. Docker的安装 yum -y install docker 说明:Docker软件包已经包括在默认的CentOS-Extras软件源里。 2. 启动Docker服务 systemctl start docker.service systemctl enable docker.service 说明:并且将Docker设置为开机启动。3. 下载官方的CentOS镜像到本地 docker pull ...阅读全文

博文 2016-01-02 03:00:00 shengshengwang

IntelliJ IDEA 14安装Golang插件go-lang-idea-plugin

1,下载IntelliJ IDEA旗舰版,我用的是14.1.3版本: http://www.jetbrains.com/idea/download/ 2. 下载golang官方SDK和go-lang-idea-plugin插件源码 http://golang.org/dl/ (要翻==墙) https://github.com/go-lang-plugin-org/go-lang-idea-plugin 3,将下载的go-lang-idea-plugin压缩包解压,IDEA点击File -> open 打开该工程。打开后有很多编译错误,先不管,接下来一步一步配置。 4,点击File -> Project Structure 打开项目结构配置窗口。 如图所示,添加JDK和IntelliJ Pl...阅读全文

博文 2015-08-17 22:00:01 Cbping

Go语言的构建方法总结

趁着近期要换工作的空闲时间,看了一下Go语言,与C++相比,Go语言的确在不少地方轻便了不少,例如:增加了内置的字符串类型、多个返回值、支持协程、简单的构建方法等等。使得在生产效率方面有了不少的提高。今天这里对Go语言的构建方法做个简单的总结。 在C/C++的工程中,极少使用单个命令来编译代码,一般是通过一些工具来进行自动化的编译,刚开始的时候手动写makefile,再后来是繁复的Autotools,之后又出现了CMake,按照时间的推移,所需我们做的工作越来越少,例如在Autotools我们大致需要如下工作: autoscan扫描工作目录,之后手动修改生成的configure.ac。 使用aclocal命令,通过configure.ac来生成aclocal.m4。 使用autoconf命令...阅读全文

博文 2015-03-21 03:00:01 yetuweiba

MongoDB基本管理命令

MongoDB命令帮助系统 在安装MongoDB后,启动服务器进程(mongod),可以通过在客户端命令mongo实现对MongoDB的管理和监控。看一下MongoDB的命令帮助系统: root@dev2:~# mongo MongoDB shell version: 1.8.3 connecting to: test > help db.help() help on db methods db.mycoll.help() help on collection methods rs.help() help on replica set methods help connect connecting to a db help help admin administrative help hel...阅读全文

博文 2015-02-15 08:00:01 Linux_He

golang中image/color包的用法

color包是image包对于color重点介绍,实现了基本的颜色库 color中定义了如下几个变量 var ( Black = Gray16{0} White = Gray16{0xffff} Transparent = Alpha16{0} Opaque = Alpha16{0xffff} ) func RGBToYCbCr(r, g, b uint8) (uint8, uint8, uint8) //RGBToYCbCr将RGB的三重色转换为Y'CbCr模型的三重色 func YCbCrToRGB(y, cb, cr uint8) (uint8, uint8, uint8) //YCbCrToRGB将Y'CbCr上的三重色转变成RGB的三重色。 type Alpha //Alpha代表...阅读全文

博文 2015-06-18 17:04:31 chenbaoke

golang ---- slice 切片

在很多应用场景中,数组并不能满足我们的需求。在初始定义数组时,我们并不知道需要多大的数组,因此我们就需要“动态数组”。在Go里面这种数据结构叫slice slice并不是真正意义上的动态数组,而是一个引用类型。slice总是指向一个底层array,slice的声明也可以像array一样,只是不需要长度。 // 和声明array一样,只是少了长度 var fslice []int 接下来我们可以声明一个slice,并初始化数据,如下所示: slice := []byte {'a', 'b', 'c', 'd'} slice可以从一个数组或一个已经存在的slice中再次声明。slice通过array[i:j]来获取,其中i是数组的开始位置,j是结束位置,但不包含array[j],它的长度是j-i...阅读全文

博文 2014-10-04 19:26:06 hufeng825

Mac下进行golang的交叉编译

由于golang的出身,对于linux的支持是最好的,相应来说,Mac的支持也很不错,对windows的支持是最差的。 进行交叉编译最好是从源码开始编译,而且在交叉编译中是不支持cgo的,这点请注意。 1. 获得golang的源码 这个当然是从官方网站下载了,只是golang是google推出的语言,所以需要翻个墙。我下载了1.4.2的golang的tar包,然后解压。虽说只需配置正确,可以放到任意位置,但还是推荐放到/usr/local目录下。请注意,这个时候还没有编译工具,不仅交叉编译不行,本地编译都是不行的。 设置GOROOT环境变量,PATH里面增加路径 2. 编译本机的工具链 cd $GOROOT\src ./make/bash 编译之后就能看到/usr/local/go目录下多了...阅读全文

博文 2015-11-11 13:00:01 sakulafly

4种编程语言基本数据类型及其取值范围整理(C++,Java,Python,Go)

1 C++ C++定义的基本类型包括算术类型和void类型。算术类型分为整型(包括字符和布尔型)和浮点型,如下表所示: C++11新增了char16_t,char32_t(最小分别为16、32位的Unicode字符型),long long(最小为64位的长整形)3种内置类型。 对于32位平台,int类型和long类型通常字长是相同的,占32位。 可以用以下语句来测试各种类型所占字节数: std::cout <阅读全文

博文 2015-06-17 23:01:36 dragon_dream

Golang实现的红黑树

红黑树是一种基于二叉查找树的数据结构,它具有如下性质: (1) 二叉查找树的性质它都有 (2) 每个节点都有一个颜色属性,每个节点或是红的或是黑的 (3) 根节点必须是黑的 (4) 每个叶子节点(nil节点)为黑 (5) 如果一个节点为红的,那么它的两个孩子都是黑的 (6) 每个节点到它子孙叶子节点的路径上的黑色节点个数是相同的 相比二叉查找树,红黑树在添加或删除元素的同时还需要调整树的深度,所以需要用到对树结构的一些旋转操作,下面的实例代码给的非常详尽了,可以看看LeftRotate()和RightRotate()函数式如何实现旋转的。如果有人发现了BUG请在留言中发表~ 这个代码是在之前的"Golang以OO的方式实现二叉查找树"里的代码加工实现的,因为本人技术不到位。。。出了好几次BU...阅读全文

博文 2015-06-17 20:03:52 u011774512

go array和slice区别

来源: http://www.2cto.com/kf/201401/274536.html 老虞http://www.cnblogs.com/howDo/ 一 数组简介 数组是内置(build-in)类型,是一组同类型数据的集合,它是值类型,通过从0开始的下标索引访问元素值。在初始化后长度是固定的,无法修改其长度。当作为方法的参数传入时将复制一份数组而不是引用同一指针。数组的长度也是其类型的一部分,通过内置函数len(array)获取其长度。 注意:和C中的数组相比,又是有一些不同的 1. Go中的数组是值类型,换句话说,如果你将一个数组赋值给另外一个数组,那么,实际上就是将整个数组拷贝一份 2. 如果Go中的数组作为函数的参数,那么实际传递的参数是一份数组的拷贝,而不是数组的指针。这个和C...阅读全文

博文 2014-10-08 11:00:11 lmxmimihuhu

golang gc机制学习

以下针对go1.5 gc方法 参考官方文章:https://blog.golang.org/go15gc,go的gc看起来类似于宽度优先搜索算法。 1. 将heap看作是一个图,其内部存储的变量之间有指针相互联系。所有变量最初都被着色为白色 2. 遍历heap,选择root节点,将它们标记为灰色 3. 针对上面选择的每一个root节点,首先将其颜色变为黑色,然后迭代的去访问他的孩子节点(即其所代表的变量内部的指针成员所指向的其他节点) 4. 针对每个孩子节点,返回第2步进行相同的处理 最后,所有能够被访问到的节点颜色都被标记为黑色,无法访问到的节点则依然是白色,这些白色节点就是孤立节点,它们的内存会被回收。 整个过程图1所示。 GC控制 Go语言提供了一个变量GOGC,用来对gc进行控制。该...阅读全文

博文 2016-04-29 11:00:02 sivolin

使用Golang实现的快速排序

一、舞动的快速排序 在实现排序算法前,先让我们来欣赏一段关于快速排序的视频,本段视频展示了快速排序的原理,如果没有看懂,请看完本文后再回头来看一下,应该就明白了吧。 O(∩_∩)O~ 二、快速排序实现 2.1 快速排序基础版 通过下面一组数据,将最左边的数设定为轴,并记录其值为 s。 (注意:*表示要交换的数,[]表示轴) [41] 24 76* 11 45 64 21 69 19 36* [41] 24 36 11 45* 64 21 69 19* 76 [41] 24 36 11 19 64* 21* 69 45 76 [41] 24 36 11 19 21 64 69 45 76 21 24 36 11 19 [41] 64 69 45 76 回圈处理: 令索引 i 从数列左方往右方找...阅读全文

博文 2014-10-09 16:00:06 u012797015

仓库作业机器监控系统设计与实现

近期在参与一个仓库作业机器监控项目。该项目的需求背景是:公司的电商业务在全国各地有多处或大或小的仓库,仓库的作业人员(没有IT技术背景)经常反馈/投诉作业机器断网、断电、连不了服务等问题。实际情况经常与反馈的不一致,但运维侧并没有数据可以证明,所以才有了这个项目的需求。 该项目第一期的目标仅是收集、展示作业机器某些监控指标数据,以便在快速定位解决问题,或至少有数据可查。 为了避免大量监控数据上报影响到生产系统的网络服务,系统采用如下结构: 实现一个agent用于在仓库作业PC或作业PDA上获取机器的监控数据; 在仓库本地服务器上实现一个数据收集处理服务,提供API给agent上传监控数据;数据收集处理服务会将接收到的数据持久化到数据库,提供给仓库本地服务器上的webApp进行数据展示等; 中...阅读全文

博文 2014-11-05 09:50:32 youngsterxyf

GO函数的使用

熟悉Go函数的语法结构 因为GO没有类的概念,所以使用结构体来模拟。代码中的函数分别计算两个整数的平方根和取数值的绝对值。 package main import ( "fmt" "math" ) type MyFloat float64 type Vertex struct { X, Y float64 } //Vertex指针对应的Abs方法 func (v *Vertex) Abs() float64 { return math.Sqrt(v.X*v.X + v.Y*v.Y) } //MyFloat结构体对应的Abs方法 func (f MyFloat) Abs() float64 { if f < 0 { return float64(-f) } return float64(f) ...阅读全文

博文 2016-04-17 00:00:01 genispan

bootstrap中的缩略图

缩略图(一) 缩略图在网站中最常用的地方就是产品列表页面,一行显示几张图片,有的在图片底下(左侧或右侧)带有标题、描述等信息。Bootstrap框架将这一部独立成一个模块组件。并通过“thumbnail”样式配合bootstrap的网格系统来实现。可以将产品列表页变得更好看。 源码文件: ☑ LESS版本:对应文件thumbnails.less ☑ Sass版本:对应文件_thumbnails.scss ☑ 编译后版本:bootstrap.css文件第4402行~第4426行 使用方法: 通过“thumbnail”样式配合bootstrap的网格系统来实现。 前面也说过了,缩略图的实现是配合网格系统一起使用,假设我们一个产品列表,如下图所示...阅读全文

Mac OS X系统搭建谷歌Go语言开发工具 Sublime Text 环境配置

载地址:http://www.cr173.com/html/33948_1.html Go语言是谷歌自家的编译型语言,旨在不损失性能的前提下降低代码复杂率。其优势是让软件充分发挥多核心处理器同步多工的优点,并可解决面向对象程序设计的麻烦。 一、安装Golang的SDK 在官网http://golang.org/ 直接下载安装包安装即可。下载pkg格式的最新安装包,直接双击运行,一路按照提示操作即可完成安装。 安装完成后,打开终端,输入go,检测Golang SDK是否安装成功,如下显示,则表示安装成功: 你也可以输入go version 查看你所安装的Golang的版本 二、环境变量配置(GOPATH) GOPATH是用来告诉Golang命令和其他相关工具,在哪里可以找到你系统上的Go包目录...阅读全文

博文 2015-09-12 23:00:00 showhilllee

Go 语言环境搭建

本文内容 概述 Go SDK LiteIDE 参考资料 2009年Google推出了它的第二个开源语言 Go。对 Go 的评价褒贬不一,中国比国外的热情高中国比国外的热情高。Go 天生就是为并发和网络而生的,除了这点外,在静态编译、GC、跨平台、易学、丰富的标准库等,其实并不如 C/C++、Java、C#、Python。由此可想而知,为什么会出现 Go?以及为什么 Go 存在如此多的问题和争论?——也许Go 更像是一个“天才的自闭症患者”,如果看清了这点,对网络和知乎上一些 Go 的褒贬也就能泰然啦,这就好像下班到家,是先吃饭,还是先洗澡,重要吗?~ 下载开发工具 下载相关文档手册 概述 Go 是Google开发的一种编译型,並發型,并具有垃圾回收功能的编程语言。 罗伯特.格瑞史莫(Robe...阅读全文

博文 2015-05-19 03:00:11 liuning8023

Golang学习笔记一:语言规范

引言 Golang参考手册,更多内容请参考http://golang.org 语言规范参考自https://golang.org/ref/spec 词汇元素 注释 行注释: // comment content 段注释:/* comment content */ 符号 符号有4类:标识符、关键字、操作符和分隔符、字面常量 分号 golang中,分号可省略 标识符 标识符即程序中的变量和类型,有一个或多个字母或数字组成,第一个字母必须字母开头。 identifier = letter { letter | unicode_digit } 关键字 标识符不能是golang中的保留关键字 break default func interface select case defer go map s...阅读全文

博文 2015-10-10 23:00:00 scherrer

项目Go配置过程

此项目为实验室正在做的视频项目,由于刚刚开始做,菜鸟一个,首先记录下配置过程吧。 环境:win7 64位 (XP的在最后做了相应补充); 1. 配置yasm 到http://yasm.tortall.net/Download.html下载Win64 VS2010 .zip,然后解压,里面有一个readme.txt,将vsyasm.exe改名为yasm.exe,如果是vs2010默认安装在C盘,则按照readme.txt中的配置即可。我的VS2010安装到了D盘,所以需要做些更改。首先,将vsyasm.exe更名为yasm.exe,然后放到D:\Software\VS2010\VC\bin,将另外的三个文件:vsyasm.props,vsyasm.targets和vsyasm.xml放到C:\...阅读全文

博文 2015-03-26 13:00:05 ybsun2010

Golang 语言windows环境搭建

本人是xp系统; 1.首先下载go语言安装包,进入下面的链接,选择适合自己的安装包进行下载(我用的go1.0.3.windows-386.msi),然后安装即可,记录下安装后的根目录以备配置使用。 下载地址:https://code.google.com/p/go/downloads/list 点击安装,我默认安装在路径C:\Go 2.下载liteIDE,进入下面的链接,选择适合自己的安装包(我用的liteidex17.windows-webkit.7z),下载完成后解压到任意目录,然后进入根目录下的bin文件夹,双击liteide.exe即可打开软件。 下载地址:https://code.google.com/p/golangide/downloads/list 软件界面: 3.配置lit...阅读全文

博文 2014-11-11 02:00:01 oopsangle

【嗜血GO笔记】Goclipse如何导入已有的GO项目

与其他的JAVA工程略有不同,你是不能在 “导入” 中找到GO项目。 我们需要通过以下的方式导入: 步奏一:如下图所示 步奏二:在创建的时候选中“Create project from existing source”-->在 Directory 中选中你要导入的程序,一般来说,如果你提前配置了GO 的环境,那么在Configure Go settings中是不需要做任何配置的。如下图 至此导入工程就完成了。希望能给刚学习GO的朋友一些帮助...阅读全文

博文 2015-02-11 23:00:00 嗜血程序员

每周一个GoLang设计模式之组合模式

我是设计模式的推崇者,相信一个良好的架构能够给系统的稳定运行和后期维护带来极大的方便,因为最近有时间重新学习GoF的设计模式,于是产生了用Go实现GoF经典设计模式的想法。 这篇文章遵循GoF书中的脉络,本篇是这个系列的第一篇:组合模式(Composite),以后如果在正常工作允许的前提下,应该会每周更新一篇。欢迎大家访问我的博客,代码可以在@Zuozuohao下载。 GoF在第二章通过设计一个Lexi的文档编辑器来介绍设计模式的使用,GoF认为Lexi设计面临七个问题: 1. 文档结构 2. 格式化 3. 修饰用户界面 4. 支持多种视感 5. 支持多种窗口系统 6. 用户操作 7. 拼写检查和连字符 GoF认为Lexi的文档只针对字符、线、多边形和其他图形元素进行处理。但是Lexi的用户...阅读全文

博文 2016-09-22 16:00:06 u012813904

go语言顺序编程

1、变量 声明: Go语言的变量声明方式与C和C++语言有明显的不同。对于纯粹的变量声明,Go语言引入了关键字var,而类型信息放在变量名之后,实例如下: Go Code 1 2 3 4 5 6 7 8 9 10 var v1 int var v2 string var v4 [10]int //数组 var v4 []int //数组切片 var v5 struct{ f int } var v6 *int //指针 var v7 map[string]int //key-string value-int var v8 func(a int) int //函数 初始化: 对于声明变量时需要进行初始化的场景,var关键字可以保留,但不再是必要的元素。 JavaScript Code 1 2 ...阅读全文

博文 2014-11-21 12:00:18 Al_xin

go语言defer使用

defer Go语言中有种不错的设计,即延迟(defer)语句,你可以在函数中添加多个defer语句。当函数执行到最后时,这些defer语句会按照逆序执行,最后该函数返回。特别是当你在进行一些打开资源的操作时,遇到错误需要提前返回,在返回前你需要关闭相应的资源,不然很容易造成资源泄露等问题。如下代码所示,我们一般写打开一个资源是这样操作的: func ReadWrite() bool { file.Open("file") // 做一些工作 if failureX { file.Close() return false } if failureY { file.Close() return false } file.Close() return true } 我们看到上面有很多重复的代码,G...阅读全文

博文 2014-10-04 19:26:04 eclipser1987

菜鸟学go之变量(-)

//1.变量 //go语言中变量变量的定义方式是变量名前加var,与c和java不同,go把变量类型放到变量名称后面 //比如定义一个变量名字叫做bird类型为type的变量如下所示 var bird type //还可以在变量后一次性定义多个变量 var bird,cat,dog type //定义变量并且对多个变量进行初始化 var bird,cat,dog type = valone,valtwo,valthree //简写方式 //var可以简写为:并且放在变量的最后形如: bird,cat,dog type := valone,valtwo,valthree //直接省略了var和type称为简短声明,一般使用在函数内部,所以var方式来声明全局变...阅读全文

博文 2014-10-04 19:26:11 范思哲思考者

USB-OTG(on-the-go)

ID(Identification)角色辨识引脚 两个USB装置互连时,要怎样让两个装置都知道:谁是主控?谁是Peripheral【外围】?这其实使用了新引脚,在传统4-pin的USB接口里追加了第五个引脚:ID 要在互接种担任主控者的USB装置,则将ID引脚位接地(GND),相对的想担任受控者的USB装置则将此引脚空接(NC),若要用更具体的电器特性来说明,则接地者的ID线路电阻必须低于10欧姆,相反的空接将大大拉高阻值,需超过100k欧姆。 图说:USB OTG 通过新增的ID引脚的接地,浮接状态来决定互连时主从的角色。 USB OTG标准在完全兼容USB2.0标准的基础上,增添了电源管理(节省功耗)功能,它允许设备既可作为主机,也可作为外设操作(两用OTG)。 OTG两用设备完全符合U...阅读全文

博文 2016-02-03 06:00:00 alifrank

如何正确理解消息送达成功率?

初接触极光推送的使用者,为了衡量消息推送的质量。经常会纠结到消息的"送达率"这个概念.那么究竟什么是送达率呢?或者如何正确理解消息的送达情况呢?   基本概念   先来看与消息送达相关的几个基本概念:   iOS 目标用户数:匹配推送条件的 iOS 用户的数量。   iOS 推送成功数:推送到 APNS 并被 APNS 成功接收的数量。如果 device token 变更,过期或者与推送环境不匹配则不会成功。   Android 目标用户数:匹配推送的条件的Android 用户数(1个月内与服务器有过连接的用户。如果超过1个月都没有与 JPush server 产生任何连接,那么将不向此用户推送)。   Android 在线推送数:消息推送时,目标用户在线...阅读全文

《Go语言编程》【2.7 完整示例】的错误

今天看《Go语言编程》再次发现了两处错误,一处是目录名称algorithms,根据上下文推测,目录名应当是没有最后一个字幕s的algorithm,因为最后main主程序import导入包时、调用排序函数时,以及编译环节时,都采用了algorithm,书中结构如下图: 这个名字同时按照书中所示的程序目录结构编译会报错: can't load package cannot find package 经过重新整理,修改成如下目录结构后编译不再报无法加载包和无法找到包的错误: 下图是修改成正确结构后编译和运行程序的结果: 本文出自 “松松” 博客,请务必保留此出处http://dongsong.blog.51cto.com/916653/158890...阅读全文

博文 2014-12-11 22:00:06 董松

安全的Go语言从源数组构建目标Slice

今天在QQ群里聊到GO语言需要改进的地方,快乐的吐槽了一番。我之前最希望用数组构建slice的语法变更一下,因为现在流行的[start:end]方式并不严谨。后来不记得是哪个版本的时候,引入了三段式的[start:end:max]语法来创建slice。这样是安全了,但是确丑了很多。 如下例所示,二段式的定义在append操作后会污染到源数组: a := [5]int{1, 2, 3, 4, 5} s1 := a[1:3:3] s2 := a[1:3] _ = append(s1, 6) fmt.Println(a) //out:[1 2 3 4 5] _ = append(s2, 7) fmt.Println(a) //out:[1 2 3 7 5] 关于对new函数的改进,chai大帮我发...阅读全文

博文 2014-11-11 18:00:02 sz_Promi

go语言defer使用

defer Go语言中有种不错的设计,即延迟(defer)语句,你可以在函数中添加多个defer语句。当函数执行到最后时,这些defer语句会按照逆序执行,最后该函数返回。特别是当你在进行一些打开资源的操作时,遇到错误需要提前返回,在返回前你需要关闭相应的资源,不然很容易造成资源泄露等问题。如下代码所示,我们一般写打开一个资源是这样操作的: func ReadWrite() bool { file.Open("file") // 做一些工作 if failureX { file.Close() return false } if failureY { file.Close() return false } file.Close() return true } 我们看到上面有很多重复的代码,G...阅读全文

博文 2015-01-22 13:00:02 chuanheng

Mac系统搭建Go语言Sublime Text 2环境配置

Go语言是谷歌自家的编译型语言,旨在不损失性能的前提下降低代码复杂率。其优势是让软件充分发挥多核心处理器同步多工的优点,并可解决面向对象程序设计的麻烦。 一、安装Golang的SDK 在官网http://golang.org/ 直接下载安装包安装即可。下载pkg格式的最新安装包,直接双击运行,一路按照提示操作即可完成安装。 安装完成后,打开终端,输入go,检测Golang SDK是否安装成功,如下显示,则表示安装成功: 你也可以输入go version 查看你所安装的Golang的版本 二、环境变量配置(GOPATH) GOPATH是用来告诉Golang命令和其他相关工具,在哪里可以找到你系统上的Go包目录。 GOPATH是一个路径列表,类似于PATH的设置: GOPATH=/home/US...阅读全文

博文 2016-03-16 03:00:01 wxd0108

如何将本地数据库迁移到云数据库RDS上?

如何将本地数据库迁移到云数据库上? 使用数据传输服务 (DTS) 将本地数据库迁移到 阿里云的云数据库RDS,可以实现应用不停服务的情况下,平滑完成数据库的迁移工作。接下来我们将学习下如何使用DTS将本地数据库迁移到RDS上。 背景 DTS 支持 SQL Server 数据结构迁移和全量迁移。 1. DTS支持结构迁移的对象有:表、视图、表触发器、同义词、SQL 存储过程、SQL 函数、自定义类型、plan guid、rule、default。 2. 全量迁移 DTS 会将本地数据库迁移对象的数据全部迁移到目标实例。如果在迁移过程中有增量更新的话,这些增量不会被迁移到目标库。所以建议在业务无写入时,使用 DTS 进行全量数据迁移。 迁移限制 将本地数据库迁移到 RD...阅读全文

每周一个GoLang设计模式之组合模式

我是设计模式的推崇者,相信一个良好的架构能够给系统的稳定运行和后期维护带来极大的方便,因为最近有时间重新学习GoF的设计模式,于是产生了用Go实现GoF经典设计模式的想法。 这篇文章遵循GoF书中的脉络,本篇是这个系列的第一篇:组合模式(Composite),以后如果在正常工作允许的前提下,应该会每周更新一篇。欢迎大家访问[我的博客](http://zuozuohao.github.io/),代码可以在[@Zuozuohao](https://github.com/Zuozuohao/GolangGOFPatterns)下载。 GoF在第二章通过设计一个Lexi的文档编辑器来介绍设计模式的使用,GoF认为Lexi设计面临七个问题: 1. **文档结构** 2....阅读全文

Windows下Go语言的环境搭建

在本地搭建了一个开发GO语言的开发环境,给大家分享一下用go语言写的第一个hello world的过程,希望对大家有所帮助。 1.想写GO语言首先得下载go语言的开发包 官方下载地址:https://code.google.com/p/go/downloads/list 我用的是Win7 64位的操作系统,截图如下: 2.把下载好的文件解压到你想解压的文件夹下,解压到的是C盘的根目录下,文件命名为go,然后是设置环境变量: 计算机->属性 ->高级系统设置 -> 环境变量 在系统变量里的Path里面加上C:\go\bin,如下图所示: 测试环境变量是否设置成功: 在CMD里运行go命令,出现如下界面说明设置环境变量成功: 3.在Eclips上安装goclips插件: (1).打开Eclips...阅读全文

博文 2014-11-09 21:00:08 allyes001

Win7安装golang开发环境--备忘录

首次接触golang,很多东西不熟悉,Git也没有安装。 1 安装golang 1.1 下载golang 我是在Golang中国的下载频道下载的golang1.6。链接如下: http://www.golangtc.com/download 我选择了64位的 go1.6.windows-amd64.msi 这个文件,安装后GOROOT和path等环境配置自动完成。 我们只需要另行配置GOPATH即可。 1.2 配置GOPATH 添加GOPATH系统环境变量;如下图所示: 然后在CMD命令行工具中通过go命令查看环境配置信息。如下图所示 2 安装Sublime Text 3 2.1 下载Sublime Text 3 官网能够访问,下载链接是:http://www.sublimetext.com...阅读全文

博文 2016-04-13 16:00:02 tom06