这 Go,越看越像是 C 和 Python 的混合体~~!

  • gofmt  用于格式化代码,缩进使用 tab,而不是空格;Python 官方则建议使用空格,而不是 tab
  • package  Go 惯例,使用单个小写的英文单词命名,不添加下划线、大写字母等
  • Go  提倡注释,不鼓励长命名
  • Go  变量、函数等对象的命名具有语法意义,首字母大写的对象,代表可被本 package 之外的对象调用,首字母小写的对象,则不能被外部调用
  • interface  命名加 er 后缀,如 Reader、Writer 等
  • Go  提供骆峰命名法,而不是下划线分断式命名
  • Go  中分号的含义与 C 中相同,但仅有少数情况下必须显式使用,如:for 循环中分隔循环条件需要使用
  • Go  中语句块的每一个大括号不能单独占一行
必须使用如下形式:
for i > {
x()
}
不能使用如下形式:
for i >
{
x()
  • Go  中没有 while 或 do ... while 循环,集中使用 for 循环;for 可以像 C 中一样使用,也可以当作 while 的形式使用,或者完全不加条件就等同于 C 中的 for (;;) {} 形式
  • Go  强制语句块使用 {...} 包围,即使只有一条语句
  • Go  switch 和 if 可以如 for 一样同时定义变量并设定条件
  • Go  函数体中定义并同时赋值可以使用 i, _, j := 1, 2, 3, 4 的形式,多变量同时赋值,下划线仅用作占位符,用于消化数字 2 避免语法错误,最后的 4 则不需要添加下划线,默认忽略
  • Go  可以像 Python 一样使用 a, b = b, a 交换变量的值
  • Go  switch 默认遇到条件符合即中断,无须如 C 中一样添加 break;单个 case 可以符带多个条件,以逗号分割,如:case 4, 5, 7, 'Y', '=' : ...;default 语句可以放置在任意位置;可以不带条件,默认条件为 true,部分场景下可用于代替大量的 if .. else if ...  
  • Go  中的 break 和 continue 可以像 goto 一样使用标签自定义跳转位置,break 可用于循环和 switch 中,continue 只能用于循环中
  • Go  中函数可以返回多个值,C 中要达到同样的效果只能使用结构体
  • Go  的函数返回值可以直接定义出名称,在函数内无需再声明即可直接使用,函数返回无须再显示指明参数,只书写一个 return 即可
  • Go  defer ... 如 C 中的 atexit(...) 一样按照选进后出的顺序注册函数退出时的清理行为
  • Go  中分配内存的函数:new 与 make,new 返回的是指针,其分配出的内存会自动清零;make 返回的不是指针,专用于 slices、maps、channels 三种数据类型
  • Go  中可以返回局部变量地址,函数退出后变量依然有效
  • Go  中有数组、切片、字典类型,变长数组以 x := [...] type {} 声明,切片以 y := [] type {} 形式声明,字典以 z := map[keytype] valuetype {} 形式声明
  • Go  数组可以直接赋值,无须如 C 中一样用循环逐个元素赋值,两个数组之间可以直接赋值(无素类型和数量必须完全一致);数组是完全按值传递,即使在函数参数中也一样,若要使用必须显式取其地址 &;
  • Go  多维数组仍然以 C 中的数组中数组逻辑实现
  • Go  数据类型强制转换使用 Python 风格,如 int64(i),而不是 (int64)i
  • Go  中的 Print 类函数根据参数类型自动判断输出类型,不以指定的 %d、%x 等标识为依据,%v 可以打印所有类型的参数值,包括数组、切片等,%+v 会将结构体、map 等类型的 key 字段一起打印,%T 打印数据类型
  • Go  合并两个切片用 append,x := []int{1, 2, 3}    y :=[]int{4, 5, 6}   x = append(x, y...),最后的 ... 必须添加;若逐个追加非聚合类型,则不需要 ...
  • Go  如 Python 一样,可以使用 + 连接多个字符串

。。。

拾遗:Go 基础的更多相关文章

  1. 类和对象:拾遗 - 零基础入门学习Python039

    类和对象:拾遗 让编程改变世界 Change the world by program 这节课谈的内容主要有: 组合 ...... 此处省略N多内容,具体请看视频讲解 ...... 类.类对象和实例对 ...

  2. 《C++数据结构-快速拾遗》 基础常识

    1.命名空间函数 namespace wjy { void print() { cout<<"; } int load(int num) { return num; } } us ...

  3. 基础拾遗------redis详解

    基础拾遗 基础拾遗------特性详解 基础拾遗------webservice详解 基础拾遗------redis详解 基础拾遗------反射详解 基础拾遗------委托详解 基础拾遗----- ...

  4. 基础拾遗------webservice详解

    基础拾遗 基础拾遗------特性详解 基础拾遗------webservice详解 基础拾遗------redis详解 基础拾遗------反射详解 基础拾遗------委托详解 基础拾遗----- ...

  5. C#基础原理拾遗——引用类型的值传递和引用传递

    C#基础原理拾遗——引用类型的值传递和引用传递 以前写博客不深动,只搭个架子,像做笔记,没有自己的思考,也没什么人来看.这个毛病得改,就从这一篇开始… 最近准备面试,深感基础之重要,奈何我不是计算机科 ...

  6. 基础拾遗-----mongoDB操作

    基础拾遗 基础拾遗------特性详解 基础拾遗------webservice详解 基础拾遗------redis详解 基础拾遗------反射详解 基础拾遗------委托详解 基础拾遗----- ...

  7. 基础拾遗----RabbitMQ(含封装类库源码)

    基础拾遗 基础拾遗------特性详解 基础拾遗------webservice详解 基础拾遗------redis详解 基础拾遗------反射详解 基础拾遗------委托详解 基础拾遗----- ...

  8. Vue.js基础拾遗

    本篇目录: 模版语法 插值 指令 v-bind指令 v-on指令 计算属性与侦听器 计算属性VS方法 计算属性VS侦听属性 Class与Style绑定 绑定HTML Class 绑定内联样式 条件渲染 ...

  9. 基础拾遗----RabbitMQ

    基础拾遗 基础拾遗------特性详解 基础拾遗------webservice详解 基础拾遗------redis详解 基础拾遗------反射详解 基础拾遗------委托详解 基础拾遗----- ...

  10. Java基础拾遗(二)

    (尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/76358523冷血之心的博客) 马上就要秋招了,新的一轮笔试面试马上 ...

随机推荐

  1. php环境搭建以及优化

    WampServer 配置伪静态 httpd.conf文件 搜索找到“LoadModule rewrite_module modules/mod_rewrite.so”这一行,去掉前面的“#”: 搜索 ...

  2. php下载

    生成迅雷下载链接 $url = "http://www.xxx.com/xxx/test.jpg"; echo "thunder://".base64_enco ...

  3. Struts1.3——使用MyEclipse集成工具开发Struts

    前面两篇通过手工写代码,手工配置struts-config.xml文件的方法来开发了一个最简单的struts项目,通过手工的方式旨在学习底层原理细节.当熟悉了以后,我们就不需要再通过纯手工的方式来开发 ...

  4. linux/unix下setuid/seteuid/setreuid/setresuid

    其中setresuid()具有最清晰的语法: setresuid()被执行的条件有: ①当前进程的euid是root ②三个参数,每一个等于原来某个id中的一个 如果满足以上条件的任意一个,setre ...

  5. 【外】001-python3之zip函数

    zip函数语法格式zip(可迭代对象1, 可迭代对象2, ... ,可迭代对象n) 函数接收任意个可迭代对象作为参数, 将所有对象中对应位置上的元素分别打包在一起组成一个tuple, 并将所有的tup ...

  6. 浅谈Java/Android下的注解

    什么是注解 java.lang.annotation,接口 Annotation,在JDK5.0及以后版本引入. 注解是代码里的特殊标记,这些标记可以在编译.类加载.运行时被读取,并执行相应的处理.通 ...

  7. 2018-2-13-git-cannot-lock-ref

    title author date CreateTime categories git cannot lock ref lindexi 2018-2-13 17:23:3 +0800 2018-2-1 ...

  8. sysprep

    今天做虚拟机模板,以及克隆.单纯的克隆会造成很多冲突问题的产生,所以在这里,windows自带的sysprep功能很好的解决了这一点. 路径位于:C:\Windows\System32\Sysprep ...

  9. window下Mysql 恢复Delete删除的数据

    转载:https://www.cnblogs.com/q149072205/p/11940591.html 本机用的Navicat连mysql测试DB又连了正式DB,因为本地与正式要频繁操作所以都打开 ...

  10. tcp/ip的通俗讲述(转)

    源地址:https://www.runoob.com/tcpip/tcpip-tutorial.html 对于我们来说网络世界丰富多彩,对于互联网来说也就是数据根据相应的规则在跑来跑去.(这些规则就是 ...