Go语言知识点笔记
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语言知识点笔记的更多相关文章
- Python 入门必学经典知识点笔记【肯定有你不知道的】
前言本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者:实验楼 Python 作为近几年越来越流行的语言,吸引了大量的学员开始学 ...
- [新手必备]Python 基础入门必学知识点笔记
Python 作为近几年越来越流行的语言,吸引了大量的学员开始学习,为了方便新手小白在学习过程中,更加快捷方便的查漏补缺.根据网上各种乱七八糟的资料以及实验楼的 Python 基础内容整理了一份极度适 ...
- HTML语言学习笔记(会更新)
# HTML语言学习笔记(会更新) 一个html文件是由一系列的元素和标签组成的. 标签: 1.<html></html> 表示该文件为超文本标记语言(HTML)编写的.成对出 ...
- JavaScript语言精粹笔记
JavaScript语言精粹笔记 掌握语言的每个特性可以让你出风头,但是并不推荐,因为一部分的特性带来的麻烦可能远超本身的价值.正如书中所言,坏的材料并不能雕刻出好的作品,要成为一名更好的程序员,要取 ...
- c语言的笔记
下面把我这半年来记的一些C语言的笔记贴出来. 1 C语言中函数参数传递是按照“值传递”进行的,即单向传递. 2 函数原型:函数类型 函数名(参数类型,参数类型……),可以不必加参数名,因为操作系统 ...
- C语言盲点笔记1
寥寥数笔,记录我的C语言盲点笔记,仅仅为以前经历过,亦有误,可交流. 1.int* a和int *a有差别吗? 没有不论什么差别,都表示a是int指针 建议这么写int *a;这样明显一点 理由例如以 ...
- C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com
原文:C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | I ...
- [iOS]C语言知识点系列视频
C语言知识点系列视频 目录 C语言技术视频-01-变量的定义 C语言技术视频-02-程序分支结构(if...else) C语言技术视频-03-程序分支结构(switch) C语言技术视频-04-程序循 ...
- 2017-04-21周C语言学习笔记
C语言学习笔记:... --------------------------------- C语言学习笔记:学习程度的高低取决于.自学能力的高低.有的时候生活就是这样的.聪明的人有时候需要.用笨的方法 ...
随机推荐
- 内存区划分、内存分配、常量存储区、堆、栈、自由存储区、全局区[C++][内存管理][转载]
http://www.cnblogs.com/JCSU/articles/1051579.html 一. 在c中分为这几个存储区1.栈 - 由编译器自动分配释放2.堆 - 一般由程序员分配释放,若程序 ...
- UVA10917_Walk Through the Forest
无向图.对于两个相连的点,如果A到终点的最短路径大于B到终点的最短路径,那么A可以往B走,求最终从起点到终点有多少种走法? 首先我们可以直接预处理所有点到终点的最短路径.然后分别判断所有的边两点是否满 ...
- 【Java并发编程】之十三:生产者—消费者模型
生产者消费者问题是线程模型中的经典问题:生产者和消费者在同一时间段内共用同一存储空间,生产者向空间里生产数据,而消费者取走数据. 这里实现如下情况的生产--消费模型: 生产者不断交替地生产两组 ...
- A New Function LightOJ - 1098()
题意 求 1 - n的的所有数的因子(不包括自身和1)和 对于一个数 i ,以i为因子的数的个数为 n/i 因为不能包括自身 所以 减一 即 n/i-1 这样遍历每一个数 累加即可 但复杂度较 ...
- java中poi进行execl导出
首先贴出最终导出的execl截图吧: 前台界面如下: 点击导出时,为其按钮的onclick事件添加exportDate()函数: function exportDate(){ var begin_Da ...
- 单点登录(五)-----遇到问题-----cas server 源码部署tomcat运行报错BeanCreationException:Error creating bean with name 's
我们在上一篇文章已经解决了把下载好的cas server源码部署到tomcat缺少子项目编辑文件或者jar包导致找不到class报错的问题 单点登录(四)-----遇到问题-----cas serve ...
- JS的语法
1.语句和表达式 var a = 3 * 6; var b = a; b; 这里,3 * 6是一个表达式(结果为18).第二行的a也是一个表达式,第三行的b也是.表达式a和b的结果值都是18. var ...
- git pull 总要求输入账号和密码解决?
如果你用git从远程pull拉取代码,每次都要输入密码,那么执行下面命令即可 git config --global credential.helper store 这个命令则是在你的本地生成一个账号 ...
- 【cf859E】Desk Disorder
Portal --> cf859E Solution 我们可以将每一个人看成一条边,将位置看成点,然后一个人在新的方案中可以选择的位置就是这条边连接的两个点,然后我们就得到了一个图 注 ...
- unity还原three之旋转
http://www.360doc.com/content/16/0829/14/12282510_586760119.shtml unity使用左手坐标系,另外在做旋转的时候必须弄清楚旋转坐标轴和旋 ...