Study Golang — (1) 基础

Go是编译型语言,其工具链将程序的源文件转变成机器相关的原生二进制指令。
Go原生地支持Unicode。
Go代码使用包来组织的,类似于其他语言中的库和模块。
一个包由一个或多个.go源文件组成,放在一个文件夹中,该文件夹的名字手机话费了包的作用。
每个源文件的开始都用package声明,指明这个文件属于哪个包。如package test或package main等。
名为main的包用来定义一个独立的可执行程序,而不是库。
包的导入通过package声明后面的import来完成。且import 声明必须跟在package之后。
如:

之后是函数的声明。
函数的声明由func关键字、函数名、参数列表、返回值列表(可以为空),以及放在大括号{}中的函数体组成。如:

其中main函数的参数为空。
函数体的左大括号必须与func关键字在同一行。
Go不需要在语句或声明后面使用分号结尾,除非有多个语句或声明出现在同一行。
一个例子:

传值与传指针
与C语言类似,传值不改变作为参数变量的原值,传指针可以。
传值:

执行完后,x的值仍为3,x1的值为4。

传指针:

执行完后,x与x1的值均为4。

  • 传指针使得多个函数能操作同一个对象。
  • 传指针比传值轻量级,只需要传内存地址,64位PC上为8字节,传值时会对参数进行拷贝,如果是较大的结构体,则会花费较多开销。
  • Go语言中channel,slice,map这三种类型的实现机制类似指针,所以可以直接传递,而不用取地址后传递指针(注:如果函数需改变slice的长度,那么仍需要取地址传递指针)。

Go语言的注释与C语言一样,单行可以用//注释,多行可以用/* … */ 注释。

Go语言不允许存在无用的临时变量,解决方案是使用空标识符,即下划线“_”,
可以用在任何语法需要变量名但程序逻辑不需要的地方。

声明变量的四种形式:
(1)s := “”
(2)var s string
(3)var s = “”
(4)var s string = “”
第一种形式通常在一个函数内部使用,不适合包级别的变量;
第二种形式依赖默认初始化为空字符串的””;
第三种形式很少用,除非声明多个变量;
第四种形式是显示的变量类型,在类型不一致的情况下是必需的;

实际情况下应当使用前两种形式,显式的初始化说明初始化变量的重要性,隐式的初始化说明初始化变量不重要。

内置printf的格式化字符串:

这是fmt的两个技巧,%后的[1]告知Printf重复使用第一个操作数,
在%o、%x或%X之前的副词#可以告知printf输出相应的前缀0、0x或0X。

Go语言中函数、变量、常量、类型、语句标签和包的名称区分大小写。
大写字母开头的变量是可导出的,也就是其它包可以读取的,是公有变量;小写字母开头的就是不可导出的,是私有变量。
大写字母开头的函数也是一样,相当于class中的带public关键词的公有函数;小写字母开头的就是有private关键词的私有函数。

go语言有4个主要声明:
变量(var)
常量(const)
类型(type)
函数(func)

type类似于C语言中的typedef,声明定义一个新的命名类型。

————————————————————

原创文章,转载请注明: 转载自孙希栋的博客

本文链接地址: 《Study Golang — (1) 基础》

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Scroll Up