golang的花括号:

在go中,继承了C系的花括号作为一个作用域块的包含范围指示,但不同于C/C++中花括号位置可任意摆放,go要求“ { ”必须在右侧(一行代码尾部),不能单独另起一行。类似Python的空格缩进一样,都是强制的。

golang的声明

在go中,不需要向C/C++那样提前声明一个函数原型,或者全局变量必须在使用前声明,例如下面的代码:

package main

import 	"fmt"

func test() {
fmt.Println(CommandLine)
} var CommandLine int = 64 func main() {
test()
}

对于第9行包内变量的声明不需要在test( )函数前面。这种规则方便了写代码的人,对读代码的人造成麻烦。

golang的变量:

在go中,未使用的变量或者包会引起编译错误,这是一个强制行为,无法更改为警告,使得代码调试略为繁琐。

另外,变量的定义和赋值在函数体内还是函数体外也有区别,函数体外必须以var开头进行声明定义或定义并初始化,不允许使用简写 := 的形式进行定义,也不允许使用 = 进行赋值,否则会报语法错误:

syntax error: non-declaration statement outside function body

特别注意的是,在go中,如果在一个函数内部返回一个局部变量的地址(指针),那么该变量会被编译器存储于heap中,而不是stack中,因此返回局部变量是合法的行为。

golang的Array和Slice:

在go中,数组array长度可以自行推断,切片slice也可以自行推断,两者语法区别是有无省略号(...)

a := [...]int{1, 2, 3}    //array
s := [ ]int{1, 2, 3} //slice

golang的表达式:

在go中,i++是一个语句而非表达式,因此 j = i++ 、fmt.Printf("%d", i++) 这样的语句是错误的。另外,go也没有前置++,即没有 ++i 这种语句。

golang的包机制:

package 关键字用于定义一个包。 源码文件的文件名不需要和包名一致。包名使用小写字母,小写是约定的而非强制的。go的一个包可以由一个或多个文件组成(不同于Java一个包就是一个文件),属于同一个包的文件都使用相同的“ package 包名 ”来命名一个包。虽然不使用包名来决定文件名,但是使用包名来决定源码文件所在目录名,即包名必须与该包的源码文件的父目录同名。

golang的权限:

在go中,没有面向对象和类及其继承的概念,一切以包为单位,决定一个包中的变量或者函数访问权限的不是public、private这些关键字,而是根据变量或者函数名字的第一个字母是否是大写,大写则是public的,小写则是private的。

Go语言知识点笔记的更多相关文章

  1. Python 入门必学经典知识点笔记【肯定有你不知道的】

    前言本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者:实验楼 Python 作为近几年越来越流行的语言,吸引了大量的学员开始学 ...

  2. [新手必备]Python 基础入门必学知识点笔记

    Python 作为近几年越来越流行的语言,吸引了大量的学员开始学习,为了方便新手小白在学习过程中,更加快捷方便的查漏补缺.根据网上各种乱七八糟的资料以及实验楼的 Python 基础内容整理了一份极度适 ...

  3. HTML语言学习笔记(会更新)

    # HTML语言学习笔记(会更新) 一个html文件是由一系列的元素和标签组成的. 标签: 1.<html></html> 表示该文件为超文本标记语言(HTML)编写的.成对出 ...

  4. JavaScript语言精粹笔记

    JavaScript语言精粹笔记 掌握语言的每个特性可以让你出风头,但是并不推荐,因为一部分的特性带来的麻烦可能远超本身的价值.正如书中所言,坏的材料并不能雕刻出好的作品,要成为一名更好的程序员,要取 ...

  5. c语言的笔记

    下面把我这半年来记的一些C语言的笔记贴出来. 1  C语言中函数参数传递是按照“值传递”进行的,即单向传递. 2  函数原型:函数类型 函数名(参数类型,参数类型……),可以不必加参数名,因为操作系统 ...

  6. C语言盲点笔记1

    寥寥数笔,记录我的C语言盲点笔记,仅仅为以前经历过,亦有误,可交流. 1.int* a和int *a有差别吗? 没有不论什么差别,都表示a是int指针 建议这么写int *a;这样明显一点 理由例如以 ...

  7. C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com

    原文:C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | I ...

  8. [iOS]C语言知识点系列视频

    C语言知识点系列视频 目录 C语言技术视频-01-变量的定义 C语言技术视频-02-程序分支结构(if...else) C语言技术视频-03-程序分支结构(switch) C语言技术视频-04-程序循 ...

  9. 2017-04-21周C语言学习笔记

    C语言学习笔记:... --------------------------------- C语言学习笔记:学习程度的高低取决于.自学能力的高低.有的时候生活就是这样的.聪明的人有时候需要.用笨的方法 ...

随机推荐

  1. startActivityForResult()的用法(超好用啊)

    最近做的一个小东西遇到这样的情况,我从一个页面MainActivity修改一些内容,需要跳转到一个新的EditActivity去做修改操作,修改完成后就回到之前的MainActivity,因为信息被修 ...

  2. HashMap,HashTable,concurrentHashMap,LinkedHashMap 区别

    HashMap 不是线程安全的 HashTable,concurrentHashMap 是线程安全 HashTable 底层是所有方法都加有锁(synchronized) 所以操作起来效率会低 con ...

  3. Xpack集成LDAP

    支持两种配置方式: The ldap realm supports two modes of operation, a user search mode and a mode with specifi ...

  4. Java EE之JSTL(下)

    3.使用国际化和格式化标签库(FMT命名空间) 如果你希望创建部署在Web上,并面向庞大的国际化用户的企业级Java应用程序,那么你最终需要为世界的特定区域进行应用程序本地化.这将通过国际化实现(通常 ...

  5. spring管理hibernate,mybatis,一级缓存失效原因

    mybatis缓存:一级缓存和二级缓存 hibernate缓存:一级缓存和二级缓存 关于缓存: 缓存是介于物理数据源与应用程序之间,是对数据库中的数据复制一份临时放在内存中的容器, 其作用是为了减少应 ...

  6. Web前端之CSS详解20180329

    一.CSS概述 html显示效果有限,所以单独成立了一门语言就做css, css是层叠样式表,用来定义网页的显示想过,可以解决html代码对样式定义的重复, 简单来说就是,css将网页内容和显示样式进 ...

  7. Lnmp上安装Yaf学习(二)

    上一节主要实践了在Lnmp上安装Yaf扩展,那么这一节将测试 Yaf 的一个简单demo的运行. 一.通过Lnmp 创建 vhost 文件 [root@localhost yaf-3.0.6]# ln ...

  8. laravel 中的 toSql 获取带参数的 sql 语句

    默认情况下,toSql 获取到的 sql 里面的参数使用 "?" 代替的,如下: DB::table('user')->where('id', 1)->toSql(); ...

  9. Service Fabric —— Stateful Service 概念

    作者:潘罡 (Van Pan) @ Microsoft 上节中我们谈到了Service Fabric最底层的两个概念,一个是针对硬件层面而言的Node Type和Node.另一个是Applicatio ...

  10. ElasticStack系列之十二 & 搜索结果研究

    问题 使用 ElasticSearch 做搜索 时,比如用户输入 --> 柠檬,搜出来的结果 --> 柠檬汽水,柠檬味牙膏等在前面,真正想要的水果那个 柠檬 在后面.已经在中文分词中加了 ...