Go 语言入门指南:基础语法和常用特性解析|青训营

88 阅读3分钟

基础语法

1. 包声明

使用package关键字来声明包名,一个Go程序通常由多个包组成。

package main

import "fmt"

func main() {
    fmt.Println("Hello, World!")
}

2. 导入包

使用import关键字来导入其他包,以便在当前程序中使用其功能。

import "fmt"

3. 函数

使用func关键字来定义函数,函数可以带有参数和返回值。

func add(a, b int) int {
    return a + b
}

result := add(3, 4)
fmt.Println(result)

4. 变量声明

使用var关键字来声明变量,可以指定变量的类型或让编译器自动推断类型。

var name string // 声明一个字符串类型的变量 
name = "John" // 赋值 
age := 25 // 声明并初始化一个整数类型的变量

5. 常量声明

使用const关键字来声明常量,常量的值在声明后不能修改。

const (
    apple = "Apple"
    banana = "Banana"
    orange = "Orange"
)

6. 控制流语句

包括条件语句(if-else)、循环语句(for、while)、switch语句等。

if age >= 18 { 
    fmt.Println("成年人") 
} else { 
    fmt.Println("未成年人") 
}
for i := 0; i < 5; i++ {
    fmt.Println(i)
}

numbers := []int{1, 2, 3, 4, 5}
for index, value := range numbers {
    fmt.Println(index, value)
}

7. 数据类型

Go语言提供了基本数据类型,如整型、浮点型、布尔型,以及复合数据类型,如数组、切片、映射、结构体等。

8. 指针

可以使用&操作符获取变量的地址,使用*操作符来访问指针指向的值。

var num int = 10
var ptr *int

ptr = &num

9. 结构体

使用type关键字来定义自定义的结构体类型,结构体可以包含不同类型的字段。

type Person struct {
    name string
    age  int
}

person := Person{name: "Rainy", age: 25}
fmt.Println(person.name, person.age)

10. 接口

使用interface关键字来定义接口,接口指定了一组方法的签名,实现了这些方法的类型被认为实现了该接口。

type Shape interface {
    Area() float64
    Perimeter() float64
}

11. 并发

Go语言通过goroutine和channel提供了原生的并发支持,可以方便地编写并发程序。

12. Go标记

Go 程序可以由多个标记组成,可以是关键字,标识符,常量,字符串,符号。如以下 GO 语句由 6 个标记组成:

fmt
.
Println
(
"Hello World!"
)

13.行分隔符

Go程序中通常一行代表一个语句结束,无需使用分号;结尾,但如果要将多个语句写在同一行,则需要使用分号;进行人为区分。

14.注释

注释不会被编译,每一个包应该有相关注释。

单行注释是最常见的注释形式,你可以在任何地方使用以 // 开头的单行注释。多行注释也叫块注释,均已以 /* 开头,并以 */ 结尾。

例如:

//单行注释
/*
我是多行注释
go
*/

15.标识符

标识符用来命名变量、类型等程序实体。一个标识符实际上就是一个或是多个字母数字、下划线_组成的序列,但是第一个字符必须是字母或下划线而不能是数字。

以下是有效的标识符:

mahesh   kumar   abc   move_name   a_123
myname50   _temp   j   a23b9   retVal

以下是无效的标识符:

  • 1ab(以数字开头)
  • case(Go 语言的关键字)
  • a+b(运算符是不允许的)

16.字符串的连接

Go语言的字符串连接可以用+实现。 例如:

package main
import "fmt"
func main{
    fmt.Println("name" + "gender")
}

17.关键字

break,default,func,interface,select等。

18.Go语言中的空格

在 Go 语言中,空格通常用于分隔标识符、关键字、运算符和表达式,以提高代码的可读性。

Go 语言中变量的声明必须使用空格隔开,如:

var x int
const Pi float64 = 3.14159265358979323846

在运算符和操作数之间要使用空格能让程序更易阅读:

无空格:

fruit=apples+oranges;

在变量与运算符间加入空格,程序看起来更加美观,如:

vegetables =cabbages+eggplants ; 

在关键字和表达式之间要使用空格。

例如:

if x > 0 {
    // do something
}

在函数调用时,函数名和左边等号之间要使用空格,参数之间也要使用空格。

例如:

result := add(2, 3)

常用特性

1. 并发编程

Go语言通过goroutine和channel提供了轻量级的并发编程模型。goroutine是一种协程,可以高效地并发执行任务,而channel用于协程之间的通信和同步数据。

2. 垃圾回收机制

Go语言拥有自动垃圾回收机制,开发者无需手动管理内存,减轻了内存管理的负担,提高了开发效率。

3. 快速编译

Go语言的编译速度非常快,可以在短时间内编译大型程序,加快了开发迭代的速度。

4. 内置的并发安全

Go语言的标准库中提供了许多并发安全的数据结构和函数,如sync包中的锁和条件变量,使得编写并发安全的程序变得更加简单和可靠。

5. 内存安全

Go语言对内存的管理非常严格,使用了内存安全的指针和切片,避免了常见的内存错误,如空指针引用和越界访问。

6. 强类型和静态类型

Go语言是一种强类型和静态类型的语言,编译器会在编译时进行类型检查,提前捕获一些错误,并提供更好的代码可读性和可维护性。

7. 丰富的标准库

Go语言的标准库提供了许多强大且易于使用的功能和工具,包括网络编程、文件操作、加密、并发编程等领域,方便开发者进行快速开发。

8. 跨平台支持

Go语言可以编译生成可执行文件,支持跨平台运行,开发者可以轻松地在不同操作系统上部署和运行Go程序。

3.小结

学习Go语言的基础语法和常用特性是一种启发式的过程,能够帮助开发者更快地编写高质量的代码。Go语言的设计理念和特性使得它成为一门强大而适用的语言,能够应对各种不同类型的项目和需求。