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. IE userdata 原理 应用 详解

    https://www.cnblogs.com/chyong168/archive/2012/04/24/2467505.html 在Internet Explorer 5中,Microsoft提供了 ...

  2. .net core2.0入门使用EF

    使用Nuget导入所需要的EF 核心包以及对应数据库的驱动包,我用的是sqlserver(.net 支持的所有数据库) Install-Package Microsoft.EntityFramewor ...

  3. THUWC2017颓废记

    2.9翘掉Wc闭幕式,和石家庄大爷们坐一辆车去杭州…路上日常orz gzz.2.10早上来报到,拍照.宿舍里另外四个人都是GD大爷.开幕式是喜闻乐见的thu日常黑pku(“在中国,世界一流大学有两所, ...

  4. 关于nginx的一点记录

    (1) 安装nginx官网下载:http://nginx.org下载适合Windows的安装包,是一个压缩包,直接解压就可以了. (2) 启动nginx有三种方式启动:a. 双击nginx.exe图标 ...

  5. Linux_MySql_yum_安装

    1.卸载原始mysql-lib sudo rpm -e --nodeps mysql-libs-xx 2.yum安装mysql-server sudo yum -y install mysql -se ...

  6. zabbix 自定义监控nginx

    zabbix自定义nginx监控项 查看nginx编译安装是否加上该选项,如果没有请重新编译安装 配置nginx.conf vim /usr/local/cpgroup/nginx/conf/vhos ...

  7. BZOJ2958 序列染色(动态规划)

    令f[i][0/1/2][0/1]表示前i位,不存在满足要求的B串和W串/存在满足要求的B串不存在W串/存在满足要求的B串和W串,第i位填的是B/W的方案数.转移时考虑连续的一段填什么.大讨论一波后瞎 ...

  8. Be the Winner HDU - 2509(反博弈。。这样叫应该没错吧。。)

    就是   好几堆苹果  每堆苹果排成一条线  可以任意从每堆拿苹果   如果一堆苹果里拿了之后  则有两种情况 1.从不是边缘拿   拿完这一堆变成两堆 2.从边缘拿   拿完还是一堆 题目还要求 谁 ...

  9. 【bzoj4542】 Hnoi2016—大数

    http://www.lydsy.com/JudgeOnline/problem.php?id=4542 (题目链接) 题意 给出一个素数$P$,一个数串$S$,$m$个询问,每次询问区间$[l,r] ...

  10. 3532: [Sdoi2014]Lis 最小字典序最小割

    3532: [Sdoi2014]Lis Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 865  Solved: 311[Submit][Status] ...