Go语言入门系列二《Golang简介及语法特点》

一、Go语言简介

Go 编程语言是一个开源项目,它使程序员更具生产力。Go 语言具有很强的表达能力,它简洁、清晰而高效。得益于其并发机制, 用它编写的程序能够非常有效地利用多核与联网的计算机,其新颖的类型系统则使程序结构变得灵活而模块化。 Go 代码编译成机器码不仅非常迅速,还具有方便的垃圾收集机制和强大的运行时反射机制。 它是一个快速的、静态类型的编译型语言,感觉却像动态类型的解释型语言。(摘取自官网)

Go语言,作为编程语言的后生,站在巨人的肩膀上,吸收了其他一些编程语言的特点。Go 语言在2009年11月进行开源,2012年发布Go 1 稳定版本。从此之后社区日渐活跃。Go语言开发应对高并发的web服务程序,有着相对于其他语言而言更高的开发效率,所以两个至少有两个十分常见的场景适用。一个是商城的秒杀(12306的抢票),另一个是游戏服务器的开发。

二、从 hello world 开始

Go语言程序有着特定的结构,我们先从一个简单hello world 开始分析。请看下面代码

package main
import "fmt"
func main() {
   /* hello world */
   fmt.Println("Hello, World!")
}

package main 定义一个名为 main 的 包. 包中必须有个main函数,这是Go语言程序运行的唯一入口,也就是说,它是必要的,并且是唯一的。

import "fmt" 引入名为 fmt 的包,因为我们下面的代码使用了 fmt 包中的函数 PrintIn,也就是说,要使用某个包中的函数,必须引用函数所属的包。

func main(){} 定义了一个main 函数,这是程序运行的入口,{}花括号左右分别表示函数体的开始和结束

/* ... */ 多行注释,用于增加代码可读性,方便维护。除此之外还有单行注释 //...

fmt.Println("...") 调用fmt 中的 Println 该函数将会把传进去的参数在控制台输出并且最后加上换行符 \n

Go程序-山顶洞人

三、Go的基础语法

1、行分隔符 — 以行断句

Go 语言与其他(大多数)语言不同的是,Go语言以行为单位区分语句的结束,不需要像C,C#,PHP等语言那样以;结尾(加了也没关系)。但是如果你要把两个语句写在同一行内,那中间必须用;加以分隔,如下面的例子

一行一句

fmt.Println("line 1")
fmt.Println("line 2")

多句一行,不推荐,降低了代码的可维护性

fmt.Println("line 1");fmt.Println("line 2");fmt.Println("line 3")

2、注释

注释分为单行注释和多行注释

//这是单行注释

/* 
    这是多行注释 
    这是多行注释 
*/

3、标识符

Go 的变量命名与其他语言相同,首先要避免预留关键字(保留字),变量类型等,如 int float,具体请查看go文档。然后只能字母或下划线开头。命名尽量做到见名知意。如定义学生名字的字段, student_name := 'jack' 而不是 a := 'jack',函数命名也该如此。

Go 25个关键字

break default func interface select
case defer go map struct
chan else goto package switch
const fallthrough if range type
continue for import return var

除此之外 Go 语言还有 36 个预定义标识符

append bool byte cap close complex complex64 complex128 uint16
copy false float32 float64 imag int int8 int16 uint32
int32 int64 iota len make new nil panic uint64
print println real recover string true uint uint8 uintptr

看到上面者这些,一句话送给刚入门编程的童鞋,IDE是个好东西,当你命名一个变量,发现颜色有所不同,那估计就是碰上上面那些了,避免之。就算我不说你迟早会发现的,所以这是句废话,看过就过吧。

4、可阅读性

关于可阅读性,建议规范一下。首先命名就是我上面所说的,宁愿变量长一点也要让变量的作用更清晰点(见名知意),然后缩进,缩进体现代码的层次结构,该缩进的给缩进了。最后是其他,如空格的使用,换行的使用。

缩进对比

//缩进的错误示范
func main() {
fmt.Println("Hello, World!")
}

//缩进的正确示范
func main() {
    fmt.Println("Hello, World!")
}

空格的使用

//没使用空格
student_name:='jack'

//使用空格
student_name := 'jack'

命名

a := 'apple' //谁知道是水果还是手机还是其他自定义的东西

//见名知意-该变量是关于手机品牌的
phone_brand_name := 'apple'

换行

//不换行
fmt.Println("line 1");fmt.Println("line 2")

//换行
fmt.Println("line 1")
fmt.Println("line 2")

未经允许不得转载