七叶笔记 » golang编程 » Golang 入门系列(三)打好基本功:Golang 语法基础

Golang 入门系列(三)打好基本功:Golang 语法基础

前面总结了我们刚开始学习golang时可能会遇到的坑,要注意那些问题,不了解的同学,可以请查看前面的文章。学习任何一门语言了解它的语法是最关键的,而且golang和其他面向对象的语言的语法还不太一样。所以接下来就来说一说 go 语言的基础语法知识。

1. Go 程序的基本结构

下面是一个Go 程序的基本结构,包含(包声明,引入包,函数等)

 	package main // 定义包名,package main表示一个可独立执行的程序,每个 Go 应用程序都包含一个名为 main 的包。

import "fmt" // 导入需要使用的包(的函数,或其他元素)

func main() { // 程序的入口函数。main 函数是每一个可执行程序所必须包含的,一般来说都是在启动后第一个执行的函数。
  fmt.Println("Hello, World!")
}  

2. 数据类型

go内建基本数据类型包括基本数据类型和高级数据类型

1. 基本数据类型

  布尔类型(bool)

  数值类型

    整数类型(byte,rune,int/uint,int8/uint8,int16/uint16,int32/uint32,int64/uint64)

    浮点类型(float32,float64)

    复数类型(complex64,complex128)

  字符串类型

    string Go的字符串是由单个字节连接起来的。使用UTF-8编码标识Unicode文本。

2. 高级数据类型

  数组(array)

  切片(slice)

  字典(map)

  通道(channel)

  函数(func)

  结构体(struct)

  接口(interface)

  指针(*Xxx,Pointer,uintptr)

如果按照底层结构划分,值类型包括(所有基本数据类型,数组,结构体),引用类型包括(slice,map,channel,function,interface,指针)

3. 变量&常量

  1. 变量名由字母、数字、下划线组成,其中首个字母不能为数字,例:var name string

  2. 声明

    a.指定变量类型,声明后若不赋值,使用默认值。

      var name string

      name = “李四”

    b.根据值自行判定变量类型。

      var name = “李四”

    c.简短形式,省略var, 注意

      age := 10

   注意:

    (:=)是使用变量的首选形式

    (:=)只能被用在函数体内,而不可以用于全局变量的声明与赋值。

    (:=)左侧的变量不应该是已经声明过的,否则会导致编译错误。

  3. 常量的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型。

    1. 常量声明: const b string = “abc”

    2. iota,特殊常量

      const (

        a = iota

        b

        c

      )

    1. 代表连续的,无类型的整数常量,

    2. 以const开始的常量声明语句为单位,

    3. 从0开始,每赋给一个常量就递增一次

4. 运算符  

1. 算术运算符,a + b ,包括(+,-,*,/,%,++,–)

2. 关系运算符,返回True或False ,a == b ,包括(==,!=,>,<,>=,<=)

3. 逻辑运算符,返回True或False ,包括(&&,||,!)

4. 地址运算符

  & : 返回变量存储地址 (&originalValue)

  * :指针变量 (*pointerValue)

5. 接收运算符,用于接收通道的数据或者给将数据加入通道(intChan<-1, <-intChan)

5. 错误处理

  1. error 接口,(errors.New(value),fmt.Error(),自定义错误类型)

 func Divide(a, b float64) (result float64, err error) {
    if b == 0 {
        result = 0.0
        err = errors.New("runtime error: divide by zero")
        return
    } else {
        result = a / b
        err = nil
    }
    return
}  

  2. panic 函数,panic(value) 与error 接口联用,

     var user = os.Getenv("USER")
    if user == "" {
        panic("The USER environment variable is not set.")
    }  

  3. recover 函数,与defer语句联用,

 func TestB() (err error) {
    defer func() { //在发生异常时,设置恢复
        if x := recover(); x != nil {
            err = fmt.Errorf("internal error: %v", x)
        }
    }()

    panic("func TestB(): panic")
}  

6. Go 基本命令

  go build 命令主要是用于测试编译。在包的编译过程中,若有必要,会同时编译与之相关联的包。

  go run hello.go    

  go get 命令主要是用来动态获取远程代码包的。

    go get github.com/go-sql-driver/mysql    

  go run 命令主要用于编译并运行Go程序。

    go run hello.go   

  go test 命令,会自动读取源码目录下面名为*_test.go的文件,生成并运行测试用的可执行文件。

最后

总结一下,。后面我会详细的介绍golang的语法。

推荐阅读:

相关文章