Go语言教程【四、Go 语言基础语法】

四、Go 语言基础语法
Go 语言的基础语法包括以下几个方面:
  1. 1变量声明和赋值:Go 语言中的变量必须先声明后使用,并且变量的类型在声明时必须指定。可以使用 var 关键字进行变量声明,也可以使用 := 运算符进行变量声明和赋值的简写。例如:
var x int // 声明一个整数变量 x
x = 100   // 赋值为 100
y := 200  // 声明一个整数变量 y 并赋值为 200
  1. 2基本数据类型:Go 语言支持布尔型、数值型、字符串和字符型等基本数据类型。其中,数值型包括整数型(int、int8、int16、int32、int64)和浮点型(float32、float64)。例如:
var b bool = true    // 布尔型变量 b 赋值为 true
var i int = 100      // 整数型变量 i 赋值为 100
var f float64 = 3.14  // 浮点型变量 f 赋值为 3.14
var s string = "hello" // 字符串变量 s 赋值为 "hello"
  1. 3控制结构: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. 4函数定义和调用:Go 语言中的函数通过 func 关键字进行定义。函数可以带有多个参数和返回值。例如:
func add(x, y int) int {
    return x + y
}


z := add(1, 2)  // 调用 add 函数并将结果赋值给 z
  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()       // 调用 Point 结构体的 Distance 方法计算距
  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 语言支持指针类型和引用类型。指针类型用于存储变量的内存地址,可以通过 * 运算符访问指针指向的值。引用类型是一种动态分配内存的数据类型,包括切片、映射和通道等。例如:
// 指针类型
var p *int  // 声明一个整数型指针变量 p
x := 100
p = &x      // 将变量 x 的地址赋值给指针变量 p
*y = 200    // 通过指针访问变量 x,并将其值修改为 200


// 引用类型
m := make(map[string]int)  // 创建一个空映射
m["a"] = 1                 // 向映射中添加一个键值对
v := m["a"]                // 从映射中取出键为 "a" 的值
除了上述语法外,Go 语言还有许多其他特性,如接口、并发和垃圾回收等。这些特性使得 Go 语言具有高效、简洁和可扩展等优点,在云计算、网络编程、分布式系统和大数据等领域得到了广泛应用。
  1. 8接口和类型断言: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. 9并发编程:Go 语言内置支持并发编程,通过 goroutine 和通道实现。goroutine 是一种轻量级的线程,可以在单个进程中并发运行,通道是一种线程安全的数据结构,用于在不同 goroutine 之间传递数据。例如:
// goroutine 示例
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
以上是 Go 语言的基础语法和特性介绍,通过学习这些内容可以掌握 Go 语言的基本用法,进一步深入学习可以了解更多高级特性和编程技巧。

你可能感兴趣的:(golang,开发语言)