201801-31 【Go语言】【7】GO语言的切片 NEW 如果说GO语言的数组为静态长度的数组,那么切片(slice)则为动态长度的数组一、基于数组创建切片1、存在一个整型数组intArr := [10]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10},那么下面的slice就是数组切片var slice []int = intArr[3:7]从图中可以看出切片从数组的第4个元素开始读取数据,直至第8个元素(但不包含第8个)。切记程序员的计数都是从0开始的哟2、若只读intArr数组的前4个元素,该如何办呢?聪明的... Read More >
201801-30 【Go语言】【6】GO语言的数组 NEW 在《【4】GO语言类型和为类型增加方法》里说过GO语言除了基础类型(如int、float64、complex128等)之外,还有复合类型,其中就包含本文的数组。对于数组大家都不陌生,在C语言中可以这样声明一个一维数组:int arr[10],那么GO语言是怎么定义的呢?一、数组的声明1、数组的声明格式为var arrName [num]type,比如:var strArr [10]string // 声明一个由10个字符串组成的一维字符串数组var byteA... Read More >
201801-29 【Go语言】【5】GO语言变量 NEW 变量也是语言的基本元素,与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每个变量声明都使用一个va... Read More >
201801-28 【Go语言】【4】GO语言类型和为类型增加方法 一、GO语言的类型GO语言中内置了如下基础类型:整型:byte(int8)、int16、int、uint等浮点型:float32、float64复数类型:complex64、complex128布尔类型:bool字符类型:rune字符串:string错误类型:error同时GO语言也支持下面的复合类型:指针数组切片:slice集合:map通道:chan结构体:struct接口:interface上看下看左看右看,怎么没有看到double类型呢?同时还有几个陌生的面孔,像run... Read More >
201801-27 【Go语言】【3】GO语言常量 通常情况下语言入门前会讲一堆背景和特性,目的是为了能让学习者对该语言有一个大概的认识,但这里我想直接进入细节,不是因为任性,而是因为常量是编程语言最基本的组成元素,这与语言背景无关。一、字面常量在说明字面常量之前先说一下魔鬼数字,哪么什么是魔鬼数字呢?func calculatePrice(price float32) float32{ return price * 0.8}这个方法中的0.8就是魔鬼数字(没有具体含义),它导致代码难以理解,这里的0.8表示折扣的意思,... Read More >
201801-26 【Go语言】【2】Sublime配置GO开发环境 一、下载Sublime Text3读者可以在官网http://www.sublimetext.com/3下载【备注】:由于我用的操作系统是win8 64位,所以选择Windows 64 bit链接下载二、注册Sublime Text31、安装完之后打开Sublime Text会发现软件没有注册,其实不注册关系也不大,只是在后面使用时会弹框影响易用性2、打开Sublime Text,选择“Help > Enter License”3、输入注册码(注意把BEGIN和END所... Read More >
201801-25 【Go语言】【1】windows操作系统下GO环境配置 一、下载Go安装包 由于google在国内被墙,直接官网下载已成绝路,不过所幸国内有一批爱心人士。访问http://golang.so/dl/,选择最新版本1.4,然后根据您的操作系统选择对应的安装包。 【备注】:由于我在家使用的是win8 64位操作系统,所以我选择go1.4.windows-amd64.msi二、安装GO1、双击go1.4.windows-amd64.msi,进入安装界面2、选择“Next”,进入最终用户License确认界面,勾选同意项,单击Next3... Read More >
201801-24 相同问题go语言与php的实现对比 一、面向对象php:class Rectangle { private $width; private $height; private $color; public function __construct($width, $height, $color) { $this->width = $width; $this->height = $height; $this-&g... Read More >
201801-23 Golang 学习笔记(安装) 这份笔记按照的参考资料为《GO并发编程实战》 和 无闻的《跟无闻学Go语言:Go编程基础视频教程》 ,按照《GO并发编程实战》的章节顺序缓慢更新。。冏 Golang简介啥的就忙了吧-。- , 不知道golang也不会学了。。。 首先安装热身!! windows平台: 我是直接在http://www.golangtc.com/download 下,下载的最新版当前位1.4版本。 直接采用了标准包安装(我很懒。。。),一路ne... Read More >
201801-22 《Go语言编程》[4.4 并发通信]代码thread.c和thread.go错误 thread.c程序pthread_create函数第三个参数为线程函数的起始地址,文中并无add函数,源代码如下:thread.c编译时会报未声明错误:根据语境推测应该是count,替换如下:重新编译,gcc编译时在最后加参数-lpthread,否则编译报对pthread_create和pthread_join未定义的引用如下:应当是行末最后加入-lpthread编译,正确编译命令:gcc -lpthread thread.c -o mainthread.go程序无z变量,... Read More >
201801-21 《Go语言编程》【3.6 完整示例】代码错误和文件目录结构 1. 音乐结构体命名错误,不是Music,而是MusicEntry,如下:2. 包名错误,不是library,而是mlib:3. manager.go代码Remove函数删除中间元素有错,index-1应当改成index:4. m0变量初始化错误,"Celion Dion", 为多余,MP3应当加上双引号:5. manager_test.go代码错误,无Genre:6. manager_test.go代码错误,err多余:7. 少了wav.go代码,可以直接拷贝mp3.go全... Read More >
201801-20 《Go语言编程》【2.7 完整示例】的错误 今天看《Go语言编程》再次发现了两处错误,一处是目录名称algorithms,根据上下文推测,目录名应当是没有最后一个字幕s的algorithm,因为最后main主程序import导入包时、调用排序函数时,以及编译环节时,都采用了algorithm这个名字,书中结构如下图:同时按照书中所示的程序目录结构编译会报错:can't load package cannot find package经过重新整理,修改成如下目录结构后编译不再报无法加载包和无法找到包的错误:下图是修改成正... Read More >
201801-19 《Go语言编程》【2.6.2 defer】章节的代码错误 《Go语言编程》【2.6.2 defer】章节函数CopyFile代码有误,变量dstName并未声明,按照上下文推测应当是笔误,书中代码样式如下:将dstName改成dst就正确了。... Read More >
201801-18 《Go语言编程》书中【2.4.1 条件语句】另外一处错误 《Go语言编程》一书中【2.4.1 条件语句】有一处错误,应当是书中使用Go语言版本低于1.1版所致,原文如下: 在有返回值的函数中,不允许将“最终的” return语句包含在if...else... 结构中,否则会编译失败:function ends without a return statement。失败的原因在于, Go编译器无法找到终止该函数的return语句。编译失败的案例如下:func example(x int) int { if x == 0 { ... Read More >
201801-17 Go语言调用C语言函数的坑 最近在看人民邮电出版社 许式伟 吕桂华编著的《Go语言编程》,看到【1.2.9 语言交互性】小节的cprint.go。未按照书中源代码格式编写,而是把 import "C" 和 import "unsafe" 合并放入小括号中并和注释结束符 */ 间隔了一行,这也是大多数Go语言学习和开发者经常使用的代码风格,我修改后的代码如下:package main/*#include <stdio.h>#include <stdlib.h>*/import ( ... Read More >
201801-16 《Go语言编程》【1.5 工程管理】calc.go的代码错误 最近看由人民邮电出版社许式伟 吕桂华等编著《Go语言编程》【第1章 初识Go语言】【1.5 工程管理】时,发现了示例代码calc.go有几处错误,args := os.Args数组变量args[0]代表程序自身,3个if语句len(args)条件判断右值也都小了1,按照书本编写代码运行时将会一直执行Usage()指向的匿名函数,显示如下:USAGE: calc command [arguments] ... The commands are: add ... Read More >
201801-15 golang快速排序算法 快速排序算法原理:设置分水岭,把小于分水岭的数排到分水岭左侧,其余的排到右侧,递归的对分水岭两侧的元素做同样的处理package qsort func quickSort(values []int, left int, right int) { if left < right { // 设置分水岭 temp := values[left] // 设置哨兵 i, j := left, right for { // 从右向左找,找到第一个比... Read More >
201801-14 go语言快速读取配置文件并声明环境变量 为了快速声明配置文件中的全局变量而写的封装包,大家笑纳,废话少说,直接上方法。1.首先,下载包:go get "github.com/luckykris/go-utilbox/Env" go get "github.com/luckykris/go-utilbox/Conf/ReadConf"2.书写配置文件(例):vim test.cfg,写入如下配置内容:[gms] port = 2016 [db] db = mysql user = root password = re... Read More >
201801-13 go语言里比较好用的计划任务调度模块 大部分人使用的可能都是github.com/robfig/写的cron模块,但是这个模块里只有动态添加任务,却没有动态删除任务的func, 所以经过一番查找,发现了一个比较好的cron模块:https://github.com/jakecoffman/cron 这个模块虽然fork的人比较少但是个人认为还是不错的,他基本是robfig写的cron的改良,把任务的结构体里增加了name string字段,这就让所有任务都有了一个唯一标示,借助他的RemoveJob fun... Read More >
201801-12 go语言 学习笔记1 写服务器,天天与各种数据结构打交道。学习go语言已经10天了,还是未能很好应用。写起代码磕磕绊绊。希望写个博客,增加记忆理解。对于何时用channel,何时用sync.Mutex很纠结。何时用go gorountine也很纠结第一种: 生产者+消费者生产者:在一个gorountine,不停的生产 发送到channel消费者:在一个gorountine,不停的处理来自生产者channel的数据,并通过另一个channel发出来主线程里,一个for循环,生产者+消费者一起例子如... Read More >