bilibili事件发生后,忽然意识到这么高大上的bilibili竟然是用Go(golang)语言写的。忍不住我也要开始学这门有趣的语言。
其实Go官方是有非常好的中文版官方教程的,尊重版权(Golang Doc )。
这里我与大家分享出来一些文档的重点,首先是基础篇的内容,学完就能正式入门Go了,希望大家能happy。(我边学边更新~)
包
每个 Go 程序都是由包构成的。
main"fmt""math/rand""math/rand"package randrand.Intn导入
此代码用圆括号组合了导入,这是“分组”形式的导入语句。
当然你也可以编写多个导入语句,例如:
不过使用分组导入语句是更好的形式。
导出名
PizzaPimathpizzapi在导入一个包时,你只能引用其中已导出的名字。任何“未导出”的名字在该包外均无法访问。
执行代码,观察错误输出。
math.pimath.Pi函数
函数可以没有参数或接受多个参数。
addint注意类型在变量名 之后。
(参考 这篇关于 Go 语法声明的文章了解这种类型声明形式出现的原因。)
函数(续)
当连续两个或多个函数的已命名形参类型相同时,除最后一个类型以外,其它都可以省略。
在本例中,
被缩写为
多值返回
函数可以返回任意数量的返回值。
swap命名返回值
Go 的返回值可被命名,它们会被视作定义在函数顶部的变量。
返回值的名称应当具有一定的意义,它可以作为文档使用。
return直接直接返回语句应当仅用在下面这样的短函数中。在长的函数中它们会影响代码的可读性。
变量
varvar变量的初始化
变量声明可以包含初始值,每个变量对应一个。
如果初始化值已存在,则可以省略类型;变量会从初始值中获得类型。
短变量声明
:=varvarfunc:=基本类型
Go 的基本类型有
本例展示了几种类型的变量。 同导入语句一样,变量声明也可以“分组”成一个语法块。
intuintuintptrint零值
没有明确初始值的变量声明会被赋予它们的 零值。
零值是:
0false""类型转换
T(v)vT一些关于数值的转换:
或者,更加简单的形式:
float64uint类型推导
:=var =当右值声明了类型时,新变量的类型与其相同:
intfloat64complex128v常量
const常量可以是字符、字符串、布尔值或数值。
:=数值常量
数值常量是高精度的 值。
一个未指定类型的常量由上下文来决定其类型。
needInt(Big)intint