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

62 阅读3分钟

Go语言基础语法

Go语言的基础语法包括以下几个方面:

1.1包和模块:Go语言使用包(package)来组织代码,每个Go程序都包含一个main包。学习Go语言时需要了解如何引入和使用其他包,以及如何创建自己的包

1.2基本数据类型:

Go语言之支持数值型,布尔型,字符型和字符型等基本数据类型。其中,数值性整数型(int,int8,int16,int32,int64)和浮点型(float32.float64)

var i int=100
var a bool=false
var b float32=314
var c string=“hello”

1.3变量的声明与赋值:

var x int //声明变量 x 
x=10 //赋值
x:=100  //也可以用:=进行变量声明和赋值。

变量必须先声明后使用,变量的类型在声明世必须指定,可用var关键字声明,也可以用:=运算符。

1.4控制结构:

Go语言支持if,for,switch和select等控制结构,if和switch结构用于条件判断,for用于循环(不需要带括号),select结构用于多路复用。

// if 结构
if x > 0 {
    fmt.Println("x is positive")
} else if x < 0 {
    fmt.Println("x is negative")
} else {
    fmt.Println("x is zero")
}
 
 
// for 结构
for i := 0; i < 10; i++ {
    fmt.Println(i)
}
 
 
// switch 结构
switch x {
case 1:
    fmt.Println("x is 1")
case 2:
    fmt.Println("x is 2")
default:
    fmt.Println("x is not 1 or 2")
}
 
 
// select 结构
select {
case <-ch1:
    fmt.Println("received from ch1")
case <-ch2:
    fmt.Println("received from ch2")
}

1.5结构体和方法:

Go 语言支持结构体类型和方法。结构体用于封装多个数据成员,方法用于对结构体进行操作。

type Point struct {
    X, Y int
}
 
 
func (p Point) Distance() float64 {
    return math.Sqrt(float64(p.X*p.X + p.Y*p.Y))
}
 
 
p := Point{X: 3, Y: 4}  // 创建一个 Point 结构体实例
d := p.Distance()       
  • 结构体解释:将一个或多个变量组合到一起,形成新的类型.这个类型就是结构体
  • Go语言中的结构体和C++结构体有点类似,而Java或C#中类本质就是结构体
  • 结构体是值类型
  • 结构体定义语法

1.6数组和切片:

Go 语言中的数组是一种固定长度的数据结构,可以通过下标访问数组元素。切片是对数组的一种封装,可以动态地增加或删除元素。

// 数组
var a [3]int  // 声明一个长度为 3 的整数型数组
a[0] = 1      // 将第一个元素赋值为 1
a[1] = 2      // 将第二个元素赋值为 2
a[2] = 3      // 将第三个元素赋值为 3
 
 
// 切片
s := []int{1, 2, 3, 4, 5}  // 创建一个包含 5 个元素的整数型切片
s = append(s, 6)           // 向切片中添加一个元素 6

1.7指针和引用类型:

Go 语言支持指针类型和引用类型。指针类型用于存储变量的内存地址,可以通过 * 运算符访问指针指向的值。引用类型是一种动态分配内存的数据类型,包括切片、映射和通道等。


type Animal interface {
    Speak() string
}
 
 
// 结构体实现接口
type Dog struct{}
 
 
func (d Dog) Speak() string {
    return "Woof!"
}
 

// 类型断言
var a Animal = Dog{}
d, ok := a.(Dog)
if ok {
    fmt.Println(d.Speak())  // 输出 Woof!
}

常用特性解析

1.并发编程:Go语言内置支持并发编程,通过goroutine和channel来实现。学习Go语言时需要了解如何创建和管理goroutine,以及如何使用channel进行通信和同步。


func worker() {
    for i := 0; i < 10; i++ {
        fmt.Println("working...")
        time.Sleep(1 * time.Second)
    }
}
go worker()  // 启动一个 goroutine
// 通道示例
ch := make(chan int)  // 创建一个整数型通道
go func() {
    ch <- 1  // 发送一个整数 1 到通道中
}()
x := <-ch  // 从通道中取出一个整数
fmt.Println(x)  // 输出 1
  1. 垃圾回收机制:Go语言具备自动内存管理的垃圾回收机制,开发者无需手动管理内存,减轻了开发负担,提高了开发效率。 3.快速编译:Go语言编译速度快,可以快速生成可执行文件,方便开发者进行测试和部署。