后端实践选题 Go 语言基础语法和常用特性解析 | 青训营

64 阅读3分钟

Go语言最初由Google公司的Robert Griesemer、Ken Thompson和Rob Pike三个大牛于2007年开始设计发明,他们最终的目标是设计一种适应网络和多核时代的C语言。所以Go语言很多时候被描述为“类C语言”,或者是“21世纪的C语言”。Go语言继承了C语言语法表达,参数传递,数据类型的特点,同时在细微之处重新优化设计,形成了更新颖,更高效的语言体系。

1. Go语言的基础语法

1. 编辑说明

package main
import "fmt"
func main() {
// 终端输出hello world
fmt.Println("Hello world!")
}

Go语言编辑时更加简便省略,语法上和C语言差别不大,在换行时可直接回车跳转,无需添加分号。

2.包声明

package main
import "fmt"
func main() {
// 终端输出hello world
fmt.Println("Hello world!")
}

如上编写的程序,在编写Go程序都必须包含一个package声明,用于指定当前文件所属的包,如 package main。同时也可引入包,如 import "fmt"其实就是引入了fmt包,功能是输出最终运行结果。实现何种功能就应在程序头部引入相应的包。

3. 函数定义

func main(){
var a = []int{1, 2, 3}
Print(a...)   // 解包
Print(a)	  // 未解包
}

func Print(a ...int{}) {
fmt.Println(a...)
}

使用func关键字定义函数,可以指定参数和返回值,每一个可执行程序中必须拥有一个main函数。

4、标识符:

Go语言标识符与其它语言类似,第一个字符必须是字母、下划线,不能是数字。

5、关键字

Go语言的25个关键字: 主要应用的有var, type, switch, struct, select, return, range, package等 Go语言的36个预定义标识符: 主要包括append, bool, byte, cap, close, complex, complex64, complex128, uint16, copy, false等

Go 语言常用特性解析

Go语言有多种特性,主要有并发编程,垃圾回收,错误处理,语言交互等。这里挑选最具有代表性的特性进行分析。

1.并发编程

package main
import (
"fmt"
"time"
)
func running() {
var times int
// 构建一个无限循环
for {
    times++
    fmt.Println("tick", times)
    // 延时1秒
    time.Sleep(time.Second)
}
}
func main() {
// 并发执行程序
go running()
// 接受命令行输入, 不做任何事情
var input string
fmt.Scanln(&input)
}

Go语言开发时设计了轻量级的协程(goroutine)和通道(channel)机制,方便编写并发程序。goroutine 其实就是线程,但是它比线程更小,因为 goroutine 在多核 cpu 环境下是并行的,如果代码块在多个 goroutine 中执行,那么我们就实现了代码的并行。

2. 错误处理

package main

import (
"fmt"
)

//结构体 fileError
type fileError struct {

}
//在结构体 fileError 上实现 Error() 方法,相当于实现了 error 接口
func (fe *fileError) Error() string {
return "文件错误"
}

//经过以上两步已经实现了error这一接口数据类型!

func main() {
conent, err := openFile()
if err != nil {
	fmt.Println(err)
} else {
	fmt.Println(string(conent))
}
}

//只是模拟一个错误
func openFile() ([]byte, error) {  //返回一个error类型的值
return nil, &fileError{}
}
最终输出为:文件错误

Go语言可使用多返回值来处理函数调用可能出现的错误。Go 语言通过内置的错误接口提供了非常简单的错误处理机制。