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. how to get iframe dom in js

    how to get iframe dom in js https://stackoverflow.com/questions/3999101/get-iframes-document-from-ja ...

  2. POJ1149_PIGS

    一共有n个猪圈,m个客人,一开始每个猪圈都有一定数量的猪猪.每个客人会打开一些猪圈,带走最多为某一个数量的猪猪,剩下的猪猪可以任意分配在这些开了的猪圈里面,然后重新关上.问所有的客人最多可以带走多少猪 ...

  3. 在动作类上加上SkipValidation 在反射时候会获取到该反射信息 就不会执行validate方法

    在动作类上加上SkipValidation 在反射时候会获取到该反射信息 就不会执行validate方法

  4. cmake 常用变量和常用环境变量查表手册

    cmake 常用变量和常用环境变量查表手册 一,cmake 变量引用的方式: 前面我们已经提到了,使用${}进行变量的引用.在 IF 等语句中,是直接使用变量名而不通过${}取值 二,cmake 自定 ...

  5. pragma指令详解(转载)

    #pragma comment( comment-type [,"commentstring"] ) 该宏放置一个注释到对象文件或者可执行文件.comment-type是一个预定义 ...

  6. BZOJ.4034 [HAOI2015]树上操作 ( 点权树链剖分 线段树 )

    BZOJ.4034 [HAOI2015]树上操作 ( 点权树链剖分 线段树 ) 题意分析 有一棵点数为 N 的树,以点 1 为根,且树点有边权.然后有 M 个 操作,分为三种: 操作 1 :把某个节点 ...

  7. php实践

    http://blog.csdn.net/apanious/article/details/51075899

  8. js中apply(thisArg, [argsArray])的参数与ArrayLike的关系

    你是否写过或见到过这样的代码 xx.apply(this,slice.call(arguments)) //slice.call转为数组是否多余 mdn地址 msdn地址 一.微软和mdn对参数的介绍 ...

  9. React-Router 动画 Animation

    React-Router动画实际上和React动画没什么区别,都是使用 'react-addons-css-transition-group' 这个组件:但是,和普通的 React-Router 的 ...

  10. 【题解】CF1154

    A Description 有三个正整数 \(a,~b,~c\),现在给定 \(x_1~=~a + b,~x_2~=~a + c, x_3~=~b + c, ~x_4~=~a + b + c\),请求 ...