跳至主要内容

博文

Go语言学习笔记|变量声明

开始写一个程序声明变量几乎是在完成“hello world”之后第一件要做的事,所以我单独作为一个章节来写。 Go语言的声明变量用var关键词实现,很多语言里也是这样。 var 变量名 类型 var book string var num int ​ 批量声明变量 var { book string num int } ​ 变量初始化 var book string = "php" var book = "php" ​ 在第二种方式里我并没有声明类型,同样可以成功,原因是Go会在编译时根据value自动推导变量类型,但是如果我这么写会怎么样? var book ​ 答案是编译时会报错,因为Go会在编译时根据value推导类型,但前提是你得给个value,这里不同于php,php是弱类型的语言,php在类里定义一个变量的语法是 class A { public $book ; } ​ 变量初始化还有一个更便捷的方法,事实上大多数时候我们只用这种方式,可以用 := book := "php" ​ 但是这种方式有一点要注意,以这种方式声明一个变量必须是该变量第一次出现,举个例子 var book string book := "php" ​ 这样的代码是不被编译器允许的,为什么会写出这样的代码呢?我是一个phper,很自然以为这个符号就是变量赋值语句,其实不然
最新博文

Go语言学习笔记|包

在程序语言里包就是独立的代码块或者功能块,有的包只实现特别简单的功能,比如字符串处理,有些包实现一个比较复杂的功能,比如无限极分类。很多语言都有包的概念,例如,php里用composer来管理包,方便开发者下载更新,Go语言里的包也是类似概念 以mac系统为例,打开/usr/local/go/src 这里就是Go内置的所有包 通过文件夹名可以看到 包的命名规范 : Go语言包的命名,遵循简洁、小写、和go文件所在目录同名的原则 这样做的优点是便于我们引用,书写以及快速定位查找 简洁、小写很好理解,那么什么是go文件所在目录同名呢? 如:在/usr/local/go/src 下有一个小写fmt的文件夹,进入fmt文件夹有诸多小写英文命名以.go为后缀的文件,这些文件就是包,打开任何一个文件,在第一行非注释代码里都声明了:package fmt,这里的fmt就是包名,包名与go文件所在目录fmt同名 声明包: 我们用关键字 package来声明包,如果你用IDE的话,当你打出package就会自动高亮 导入包: Go用import关键字来导入, 只导入一个包 : import "fmt" ​ 导入多个包: import ( "net/http" "fmt" ) ​ 问题一:net/http 很明显,我们要导入的是net下的http.go这个包,但是fmt呢?刚才打开fmt下有很多文件,具体导入哪个呢? 如果导入的时候你没有指定到具体的文件,那么Go默认导入这个包的所有文件。 问题二:程序怎么知道去哪个路径找到相应的包呢? 如果你有印象的话在安装Go的时候,要求你配置过两个环境变量,一个是GOROOT,另一个是GOPATH,这就是配置这两个环境变量的作用之一,我们一般会把GOROOT配置为Go的安装目录,GOPATH配置为我们的工程目录,Go编译器会优先在GOROOT里搜索包,如果没搜到会继续在GOPATH里搜索,一旦找到就停止搜索,如果都没找到,编译就不成功。 这里有个有趣的事情,我们导入了一个包,这个包也存在,但是程序里没有用到这个包里的任何方法,会怎么样呢?如果是php里inclu

Go语言学习笔记|写在开始

我为什么要学习Go? 我是一个从事了9年php开发的程序猿,多年的php开发经验已经形成了固定的肌肉记忆,遇到需要编写的脚本很自然都会用php来实现,当然这并不是一件坏事,恰恰相反在要求快速开发,高效迭代的团队里这个尤为重要,真正坏的事是慢慢的会形成一种固步自封的状态,这个很好理解,我们把语言范围缩小,在你习惯所用的范围内,如果你对一个框架非常熟悉,源码都“倒背如流”的时候也会很自然地排斥其他框架,长期下去你会形成框架型程序猿,离开这个框架就像失恋一样。但是正如框架的百家争鸣一样,语言也是蓬勃发展的,接触另一门正快速发展的新语言除了能掌握一项新技能外,对当前已经掌握的语言也是一个很好类比总结,Go语言从诞生之初就因为种种亮点备受追捧,社区壮大,最直观的感受就是翻一下拉勾,就能看到很多大厂都在招Go语言工程师,所以现在去学习一个版本号仅为1.11却蓬勃发展备受诸多大牛推崇的语言肯定是一个不错的时机 我打算怎么写笔记? 在写这一篇笔记之前,我已经看了一些Go语言编程实践的书,老实讲作为有编程基础的人来说不算太难理解,我经常在学习的过程中问一个问题:Go是这么实现的如果是PHP的话怎么实现?所以我在笔记里会经常拿php来和Go来做一些类比,所以如果你是一个phper可能会更能理解我的意思,我在笔记里也会尽量用一些有趣的例子来说明一个翻译过来很难懂的文字,此时此刻我正在用一台4年前的mac敲下这段文字,所以我的笔记里的例子也大多数是基于mac的开发环境,不过这个其实是无所谓的 在学习之前都需要准备什么? 因为我只记录Go语言编程,在笔记里就不记录如何安装Go,配置环境变量等问题,事实上这些事情已经变得和你在windows上安装一个应用一样简单了,这一点不同于php的开发环境配置,如果你像我一样经历过初学php时的环境编译你一定理解那种痛,用Go哪怕你是一个没有编程基础的人可能10分钟就能写出“你好,世界”,如果是php的话可能一天过去了还在解决某个编译error(当然我说的是源码安装)。除了要安装配置好Go之外你还需要准备一个自己得心应手的IDE,IDE是你上阵的武器,千万不要在武器上凑合,如果你php的时候用了sublime,那么很容易安装一个Go的插件就可以完美支持,你也可以用GoLand这种工具,随便你,像我说的只要得心应手就OK 希