最近接触对象存储,国际上鼎鼎有名的Amazon S3还有Google Cloud Service在国内由于防火墙还有机房过远的问题,并不能投入生产使用。国内有名的对象存储,大家众所周知的七牛云,后台就是Go语言实现的。对于第一个敢吃螃蟹的人,我一直很佩服。于是抱着憧憬的心态走进Go语言的大门。
  
  首先,接触一门语言,就从最啰嗦但是最不能缺少的基础语法和顺序变成开始。对于接触这些,我一般是从搭建好自己的编译构建环境开始,首先下载Go语言SDK,国内下载地址:我这里用的是最新的1.7.2,如果你要用IDEA 的go plugin进行编程,则需要用1.4.2,不能用高版本的。之后,下载LiteIDE,进行编码:我们打开LiteIDE,新建一个非GOPATH目录下的示例项目(我们这里吐槽下LiteIDE,他并不是一个很严谨,很好用,很完整的IDE,对于习惯了IDEA的懒人程序员,可能不太习惯。但是,回归原始也是很有好处的),命名为Gotest。
  
  项目会自动生成目录和代码。我们只保留main.go就可以。Go语言有他智能的一面,首先摆上两个原则:对于每个项目,都需要配置GOPATH。为了能构建这个项目,需要把项目根目录加入到GOPATH,否则找不到这个项目内部的package。
  
  Go根据项目目录结构自动构建,这里基本原则就是:需要一个main入口,自己新建应用或者一个代码包都是在src目录下新建一个文件夹,文件夹名称一般是代码包名称,当然也允许多级目录,例如在src下面新建了目录$GOPATH/src/github.com/hashZhang/test那么这个包路径就是“github.com/hashZhang/test”,包名称是最后一个目录test变量定义Go语言兼顾了自由性和严谨性:首先,对于变量的定义,我们有三种方式,很自由。接着,没用的元素在编译时就不会通过。例如:没用的包引入,没用的变量定义,这些在编译时就会报错。
  
  下面我们写一个小程序:我们在项目根目录新建pkg和src两个文件夹,src目录存放我们的源代码,pkg是给go编译器用的,会生成编译好的文件,其实就是编译好的库文件。根目录保留在src目录下新建fundamental文件夹,在fundamental文件夹新建variables.go。
  
  编写源码(这里先提出一点Go语言不用分号分割,回车就可以):包如果没用,则会在编译时报错,这里用了标准输出函数,模块中要导出的函数,必须首字母大写。
  
  变量如果没有用过,也会在编译时报错,初始化为默认值0注意小写s,初始化为默认值""数组,初始化为默认值动态数组,数组切片,初始化为默认值[]相当于C语言中的结构体,,初始化为默认值}指针,初始化为默认值为string,value为int,初始化为默认值定义为一个function,规定输入输出,初始化为默认值根据初始值自动判断类型第三种初始化}常规思路的交换,利用a+b-a和a+b-b来达到交换的目的)
  
  }语言交换,因为函数可以返回多个值,而且支持类似于a,b=b,a的多重赋值语法)
  
  },对于模块中不需要导出的函数,首字母不要大写。
  
  }12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 www.ymzxrj.com 561234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556我们总结下:1 变量有3种定义或初始化方式:1231232.变量类型非常自由,有C语言的结构体,也有像JavaScript那样的函数类型变量。
  
  3.变量赋值很自由,对于其他语言,变量交换有两种方式:一种是中间变量,另一种是利用a+b-a和a+b-b来达到交换的目的。Go语言支持多重赋值,常规思路的交换,利用a+b-a和a+b-b来达到交换的目的)
  
  }语言交换,因为函数可以返回多个值,而且支持类似于a,b=b,a的多重赋值语法)
  
  }1234567891011121314151617181920211234567891011121www.sratchina.com314151617181920214.以上的多重赋值,也来源于Go语言的函数可以返回多个值。
  
  ,对于模块中不需要导出的函数,首字母不要大写。
  
  }1231235.Go语言的var关键字和import关键字都支持括号内多个定义,例如:var()
  
  123412346.对于包外部可见的function,function名称开头必须大写(就是说,利用开头字母大写的方法定义包外部可见可以调用的function)
  
  这里我们可以调用的是Initialization(www.lafei333.cn),SwapDisplay1(www.feiyunfan.cn ),SwapDisplay2(www.yunfanfei.cn )方法,而swap方法不可以。
  
  在main.go www.huafanyun.cn 中编写:)
  
  ,模块中要导出的函数,必须首字母大写。
  
  ,模块中要导出的函数,必须首字母大写,模块中要导出的函数,必须首字母大写}12345678910111213141234567891011121314编译运行:1234567891011121314151617181912345678910111213141516171819生成的文件:这里写图片描述如我们之前所说,在pkg目录下自动生成了.a库文件。在根目录下还生成了和项目名称一样的exe可执行文件。
  
  常量定义Go语言的字面量是无类型的在fundamental文件夹下新建constants.go:包如果没用,则会在编译时报错,这里用了标准输出函数不用像其他语言那样指定是float还是double,末尾加上f,字面量常量都是无类型的,这里实际上是不用像其他语言那样指定是float还是double,末尾加上f,字面量常量都是无类型的,这里实际上是不指定类型也可以,会自动匹配成能容纳这个变量的浮点类型常量)
  
  三种预定义常量,iota会在下一个const之前递增,但是,必须在不同赋值语句才能递增。
  
  )
  
  必须在不同赋值语句才能递增。
  
  )
  
  }12345678910111213141516171819202122232425262728293031321234567891011121314151617181920212223242526272829303132总结如下几点:1.Go语言的字面量是无类型的,对于浮点型,不用像其他语言那样指定是float还是double,末尾加上f,字面量常量都是无类型的不用像其他语言那样指定是float还是double,末尾加上f,字面量常量都是无类型的,这里实际上是不用像其他语言那样指定是float还是double,末尾加上f,字面量常量都是无类型的,这里实际上是12312www.yunfeizao.cn 32.在定义常量时,不指定类型也可以,会自动匹配成能容纳这个变量的浮点类型常量3.三种预定义常量(true,false,iota),iota会在下一个const之前递增,但是,必须在不同赋值语句才能递增。
  
  三种预定义常量,iota会在下一个const之前递增,但是,必须在不同赋值语句才能递增。
  
  )
  
  必须在不同赋值语句才能递增。
  
  )
  
  123456789123456789类型布尔类型初始化为bool类型,默认为也可以表达式赋值,需要加上括号}1234567812345678总结:1. 布尔类型初始化,默认为2. 布尔类型不支持其它赋值或者强制转换,例如赋值为1

Go语言探险思考笔记的更多相关文章

  1. C语言细节总结笔记

    C语言细节总结笔记 */--> C语言细节总结笔记 Table of Contents 1. 三步异或法交换数字 2. 做差法交换数字 3. 按n位置位 4. 求余求商求积 5. 辗除法求最大公 ...

  2. # C语言假期学习笔记——6

    C语言假期学习笔记--6 数组 主要学习了一位数组和二维数组. 数组是一组具有相同类型的变量的集合.C语言程序通过元素的下标来访问数组中的元素.(下标从0开始) 一位数组 类型 数组名[元素个数] 二 ...

  3. R语言可视化学习笔记之添加p-value和显著性标记

    R语言可视化学习笔记之添加p-value和显著性标记 http://www.jianshu.com/p/b7274afff14f?from=timeline   上篇文章中提了一下如何通过ggpubr ...

  4. 二级C语言真题笔记

    二级C语言真题笔记 1. 知识重点:数据类型.循环.数组.函数.指针.结构体与共同体 2. 求程序的运行结果 #include <stdio.h> main() {     short i ...

  5. C/C++编程笔记:C语言入门知识点(三),请收藏C语言最全笔记!

    今天我们继续来学习C语言的入门知识点,第一课:C/C++编程笔记:C语言入门知识点(二),请收藏C语言最全笔记! 21. 输入 & 输出 当我们提到输入时,这意味着要向程序填充一些数据.输入可 ...

  6. 《手把手教你学C语言》学习笔记(2)---学习C语言的目标和方法

    一.学习C语言的目标主要是: 熟练掌握C语言的关键字,语法规则,程序控制等: 掌握基本的数据结构,数组.链表.栈和队列等: 掌握C语言中指针和内存.数组与指针.函数与指针.变量和指针.结构体和指针.硬 ...

  7. <JavaScript语言精粹>-读书笔记(一)

    用object.hasOwnProperty(variable)来确定这个属性名是否为该对象成员,还是来自于原型链. for(my in obj){ if(obj.hasOwnProperty(my) ...

  8. swift语言的学习笔记

    swift参考了OC,Rust,Haskell,Ruby,Python,C#等语言的特性.首先,学习这门语言是速学的,我不想浪费太多时间在笔记这门语言和其他语言的哪里不同,特性你自己亲自实践就知道了. ...

  9. Go语言--基础语法笔记

    ### 换了工作,好久没有添加新文章了,本来是想更新到github上的,想想还是在博客里放着,感觉以前的文章都没有很仔细,都只是问题处理的记录, 以后想新加一些整理的笔记也好 ### 主要内容 2.1 ...

随机推荐

  1. Yii中Ajax的使用,如收藏功能

    view中 <?php $cs=Yii::app()->clientScript; $cs->registerScriptFile('http://ajax.googleapis.c ...

  2. HttpURLConnection的流式输出的缺陷和解决方法

    转自:http://www.mzone.cc/article/198.html 最近在用applet写文件上传控件的时候发现使用URLConnection来对服务器进行流式输出时的一些问题.我们通常要 ...

  3. mysql2redis

    mysql2redis这个项目主要解决mysql数据跟redis数据同步的问题 目前在测试环境研究这方面的应用,以下是git上面的介绍 git入口    git安装入口 Dependencies pl ...

  4. How to easily concatenate text based on criteria in Excel? 如何将Excel中的文本按条件合并

    To combine text with the unique ID numbers, you can extract the unique values first and then create ...

  5. 谷歌google搜索打不开、谷歌gmail邮箱及相关服务无法登录的解决的方法

    歌打不开 google打不开,与中国大陆封杀有关,可是主要是由于近期googleserver在全球范围内又一次进行了布局调整. 解决的方法是仅仅要改动用户本地计算机hosts文件就能够了. 一.Win ...

  6. extjs_02_grid(显示本地数据,显示跨域数据)

    1.显示表格 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8 ...

  7. 深入分析 iBATIS 框架之系统架构与映射原理--转载

    http://www.ibm.com/developerworks/cn/java/j-lo-ibatis-principle/ iBATIS 通过 SQL Map 将 Java 对象映射成 SQL ...

  8. (转载)myeclipse项目名称重命名

    myeclipse项目名称重命名 实例1 今天晚上在做一个jsp唱片显示的实例,myeclipse项目名称原本想写music结果写成了musci.这就需要项目名称的重命名,单纯的使用 “重构--> ...

  9. WPF自定义窗体仿新毒霸关闭特效(只能在自定义窗体中正常使用)

    比较简单的一个小功能,和新毒霸类似的效果. 效果代码: bool closeStoryBoardCompleted = false; DoubleAnimation closeAnimation1; ...

  10. Linux学习笔记总结--ssh认证登录

    原理简介 SSH证书认证登录的基础是一对唯一匹配密钥: 私钥(private key)和公钥(public key).公钥用于对数据进行加密,而且只能用于加密.而私钥只能对使用所匹配的公钥,所加密过的 ...