数据库运维
记录DBA学习成长历程

2.Go基础语法

文章目录

1 基本结构

import "fmt"

// 函数外只能放置标识符(变量\常量\函数\类型)的声明
// fmt.Println("Hello") // 非法

// 程序的入口函数
func main() {
    fmt.Println("Hello world!")
}

2 标识符与关键字

2.1 标识符命名规则

在编程语言中标识符就是程序员定义的具有特殊意义的词,比如变量名、常量名、函数名等等。 Go语言中标识符由字母数字和_(下划线)组成,并且只能以字母和_开头。 举几个例子:abc, _, _123, a123。

2.2 关键字

关键字是指编程语言中预先定义好的具有特殊含义的标识符。 关键字和保留字都不建议用作变量名。

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

37个保留字:

Constants:
true false iota nil

Types:
int int8 int16 int32 int64
uint uint8 uint16 uint32 uint64 uintptr
float32 float64 complex128 complex64
bool byte rune string error

Functions: 
make len cap new append copy close delete
complex real imag
panic recover

3 变量

3.1 变量的来历

程序运行过程中的数据都是保存在内存中,我们想要在代码中操作某个数据时就需要去内存上找到这个变量,但是如果我们直接在代码中通过内存地址去操作变量的话,代码的可读性会非常差而且还容易出错,所以我们就利用变量将这个数据的内存地址保存起来,以后直接通过这个变量就能找到内存上对应的数据了。

3.2 变量类型

变量(Variable)的功能是存储数据。不同的变量保存的数据类型可能会不一样。经过半个多世纪的发展,编程语言已经基本形成了一套固定的类型,常见变量的数据类型有:整型、浮点型、布尔型等。
Go语言中的每一个变量都有自己的类型,并且变量必须经过声明才能开始使用。

3.3 变量声明

Go语言中的变量需要声明后才能使用,同一作用域内不支持重复声明。 并且Go语言的变量声明后必须使用。

3.3.1 标准声明

Go语言的变量声明格式为:
var 变量名 变量类型

变量声明以关键字var开头,变量类型放在变量的后面,行尾无需分号。 
举个例子:
var name string
var age int
var isOk bool

3.3.2 批量声明

每声明一个变量就需要写var关键字会比较繁琐,go语言中还支持批量变量声明:
var (
    a string
    b int
    c bool
    d float32
)

3.4 变量的初始化

Go语言在声明变量的时候,会自动对变量对应的内存区域进行初始化操作。每个变量会被初始化成其类型的默认值,例如: 整型和浮点型变量的默认值为0。 字符串变量的默认值为空字符串。 布尔型变量默认为false。 切片、函数、指针变量的默认为nil。

3.4.1 初始化的标准格式

当然我们也可在声明变量的时候为其指定初始值。变量初始化的标准格式如下:

var 变量名 类型 = “值”
var name string = "Q1mi"
var age int = 18

一次初始化多个变量
var name, age = "Q1mi", 20

3.4.2 类型推导

有时候我们会将变量的类型省略,这个时候编译器会根据等号右边的值来推导变量的类型完成初始化。

var name = "Q1mi"
var age = 18

3.4.3 短变量声明

在函数内部,可以使用更简略的 := 方式声明并初始化变量。

package main

import (
"fmt"
)
// 全局变量m
var m = 100

func main() {
    n := 10
    m := 200 // 此处声明局部变量m
    fmt.Println(m, n)
}

3.4.4 匿名变量

在使用多重赋值时,如果想要忽略某个值,可以使用匿名变量(anonymous variable)。 匿名变量用一个下划线_表示,例如:

func foo() (int, string) {
    return 10, "Q1mi"
}
func main() {
    x, _ := foo()
    _, y := foo()
    fmt.Println("x=", x)
    fmt.Println("y=", y)
}

匿名变量不占用命名空间,不会分配内存,所以匿名变量之间不存在重复声明。 (在Lua等编程语言里,匿名变量也被叫做哑元变量。)

3.4.5 注意事项

函数外的每个语句都必须以关键字开始(var、const、func等)
:=不能使用在函数外。
_多用于占位,表示忽略值。

3.4.6 综合举例

package main

import "fmt"

//go语言推荐使用驼峰式命名
// var student_name string
var studentName string //推荐使用
// var StudentName string

//声明变量
// var name string
// var age int
// var isOk bool

//批量声明
var (
    name string //""
    age  int    //0
    isOK bool   //false
)

func main() {
    name = "理想"
    age = 16
    isOK = true
    //Go语言中非全局变量声明后必须使用,否则无法编译
    fmt.Print(isOK) //在终端中输出要打印的内容
    fmt.Println()
    fmt.Printf("name:%s", name) //%s为占位符,使用name这个变量的值去替换占位符
    fmt.Println()
    fmt.Println(age) //打印完换行

    //声明变量同时赋值
    var s1 string = "whb"
    fmt.Println(s1)
    //类型推导(根据值判断 该变量是什么类型)
    var s2 = "20"
    fmt.Println(s2)
    //简短变量声明,只能在函数里使用
    s3 := "哈哈哈"
    fmt.Println(s3)
    //同一个作用域中不能重复声明同名的变量
    // s1 := "zzz"
    //匿名变量是一个特殊的变量:函数章节补充

}
赞(0)
MySQL学习笔记 » 2.Go基础语法