golang系列的文章包含多篇文章,总篇如下,其中包含各篇文章的指引


golang的基础语法和其他语言有共通之处,有其他语言的语法基础能让我们更快的熟悉golang。那直接让我们步入正题吧。

1、注释

  • 单行注释 和 多行注释
// single annotation
/* 
  muti-line annotation
*/

2、定义包名

package main //定义一个名称为main的包
  • 每个go文件中必须定义包名来指明该文件归属于哪个包,而且定义包名必须在文件中非注释的第一行;
  • go文件中若存在程序入口(main函数),则该文件定义的包名必须为main;
  • 一个文件中有且只有一次定义,即只有一行package语句;
  • 包名和文件名没有必然联系,可以不同。

3、导入依赖库(系统库和第三方库)

import "fmt"
import (
    "os"
    "strings"
)

两种导入方式:单行导入或合并导入。由于项目中一般会有很多库文件,所以推荐合并导入。注意:导入的包都必须使用,若没有使用编译时将报错。

4、函数

func main(){
    doSomething
}

func是函数定义的关键字,函数体用“ { } ”包围,注意: { (左括号)不能单独成行,必须和main()在同一行。函数将在下一篇仔细讲解。

5、函数调用

fmt.Println("hello world")

fmt为golang提供的格式化输出系统库,本句实现在命令行输出hello world。

6、变量、常量、占位符、运算符、数组、指针、结构体

  • 变量
var a int = 1     //第一种: var variable_name variable_name
value := 1        //第二种: value_name := 1
var b, c, d = 1, 2, 3     //第三种: 合并声明
var(                          //第四种: 合并声明
      value1 int      = 1
      value2 string = "hello world"
)

上述有三种变量声明方式,var是golang的关键词,用于变量的声明。第一、三和四种可以在任意地方声明,当定义在函数体外时相当于全局变量;而第二种只能在函数体内声明,相当于局部变量。变量在声明后若不手动定义,编译器将为其赋值为相应的默认值

注意:golang中的变量、方法、结构体等等的名称都推荐使用驼峰命名法,而名字的首字母如果是小写字母则表示在包(package)内可见;而如果是大写字母则表示包外可见

  • 常量
const var a int = 1
const var (
        b int = 1
        c string = "hello world"
)

常量同样有单行声明和合并声明,声明时必须定义,定义后不可修改。

  • 占位符
_ ,  a = myFunction()

function()函数有两个返回值,第一个返回值赋给_ , 第二个返回值赋给a,此时的 _ 就称做占位符,可以理解为仅仅为了给第一个返回值有位置存放即可,这个返回值我再也不会用到;如果这个返回值之后还可能用到,则不能赋给 _ ,否则今后无法再使用。

  • 运算符

这个不用多讲,加减乘除余、与或非、大小等、赋值取地址等等。

  • 数组
// 形如 var variable_name [SIZE] variable_type
var stuName [20] string
  • 指针
// 形如 var variable_name *variable_type
var stuNameIndex *string
  • 结构体
// 形如 type variable_type struct { …… }
type stuInfo struct {
  var id    int
  var name  string
}
var stuInfoEntry stuInfo
stuInfoEntry.id   = 1
stuInfoEntry.name = "Alice"

7、条件语句

  • if……else…… 语句。
if condition {
    doSomething
} else {
    doSomething
}
  • switch 语句
switch condition {
    case condition1:
        ...
    case condition2:
        ...
    default:
        ...
}
  • switch语句中没有break语句,golang的语法经过优化后,在某个case执行完毕后就退出switch了,不会再接着往下执行;
  • 如果希望执行了某个case之后接着往下执行,可以在每个case最后使用fallthrough关键字。注意,使用fallthrough关键字后,后面的case是强制执行,无论condition是否为true
  • select 语句
    这涉及到一些高级语法,本篇先不讲述,我将在下一篇详细解释,感兴趣的同学们可以自己查阅资料先学习一下。

8、for 循环语句

  • 标准格式
/*for init; condition; next {
  doSomething
}*/
for i:=0; i<20; i++ {
  fmt.Println("i is: %d", i)
}
  • 特殊格式
//无限循环
for {
  doSomething
}
for true {
  doSomething
}
//省略init或next
for ; sum<100; {
  sum = sum + 1
}
  • 控制语句

break、continue和goto是用于for语句或switch语句内的控制语句,其用法于c或c++中的用法相似,这里就不再赘述了。

看到这里,大家应该都觉得似曾相识,好像学过的编程语言都有这些东西。所以大家应该不用花太多时间在基础语法上,几分钟就能看完。结合今天的基础知识,大家应该可以写出一些简单代码来验证今天的基础语法。

但是,本文也只是讲解了一些基础用法,工作中大家还会遇到更多高级的用法,那么下一篇,我们将学习golang语言中的高级语法知识,包括select、channel、方法、切片、范围、集合和接口等内容。