Go 语言基础语法详解
                           
天天向上
发布: 2025-03-25 23:33:57

原创
325 人浏览过

Go(Golang)是一种静态类型、编译型的编程语言,以简洁、高效和并发支持著称。本篇内容将系统讲解 Go 语言的基础语法,包括变量、数据类型、流程控制、函数、指针、结构体、接口等。


1. Go 语言基本结构

Go 程序的基本结构如下:

package main  // 声明当前包,Go 程序的入口必须是 main 包

import "fmt"  // 导入 fmt 包(用于输入输出)

func main() {  // 主函数,程序入口
    fmt.Println("Hello, Go!")  // 输出内容
}
  • package main:定义一个可执行程序的主包。
  • import “fmt”:导入 fmt 包,用于标准输入输出。
  • func main():程序的主入口。

2. 变量与常量

(1)变量的声明

Go 语言的变量必须先声明后使用,可以使用 var 关键字:

var name string = "Go"
var age int = 10
var pi float64 = 3.1415

Go 也支持类型推导:

var country = "China" // 自动推导为 string 类型

简短声明(只能在函数内使用):

language := "Go" // 自动推导类型

(2)多变量声明

var a, b, c int = 1, 2, 3
x, y := "hello", 100

(3)常量

常量使用 const 关键字:

const PI = 3.14
const (
    StatusOK = 200
    StatusNotFound = 404
)

3. 数据类型

Go 语言数据类型分为:

  • 基本类型intfloat32float64boolstring
  • 复合类型arrayslicemapstructpointerinterfacechannel

(1)整型

var a int8 = 127
var b uint32 = 12345
var c int = 100 // 根据系统自动推导 32 或 64 位

(2)浮点型

var pi float64 = 3.14159

(3)布尔型

var isGo bool = true

(4)字符串

var msg string = "Hello, Go!"
fmt.Println(len(msg)) // 计算字符串长度

多行字符串:

msg := `This is 
a multi-line string`

4. 运算符

Go 支持的运算符:

  • 算术运算符+ - * / %
  • 比较运算符== != > < >= <=
  • 逻辑运算符&& || !
  • 位运算符& | ^ << >>
  • 赋值运算符= += -= *= /=

5. 流程控制

(1)if 语句

if age > 18 {
    fmt.Println("Adult")
} else {
    fmt.Println("Minor")
}

支持在 if 语句中声明变量:

if num := 10; num > 5 {
    fmt.Println("Greater than 5")
}

(2)switch 语句

switch day := 3; day {
case 1:
    fmt.Println("Monday")
case 2:
    fmt.Println("Tuesday")
default:
    fmt.Println("Other day")
}

(3)for 循环

Go 只有 for 一种循环结构:

for i := 0; i < 5; i++ {
    fmt.Println(i)
}

等价于:

i := 0
for i < 5 {
    fmt.Println(i)
    i++
}

6. 数组与切片

(1)数组

var arr [3]int = [3]int{1, 2, 3}
fmt.Println(arr[0]) // 访问数组元素

(2)切片(Slice)

nums := []int{1, 2, 3, 4}
fmt.Println(nums[:2]) // [1, 2]

使用 append 添加元素:

nums = append(nums, 5)

7. Map(字典)

scores := map[string]int{"Alice": 90, "Bob": 85}
fmt.Println(scores["Alice"])

添加/修改:

scores["Tom"] = 88

遍历:

for k, v := range scores {
    fmt.Println(k, v)
}

8. 函数

(1)基本函数

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

(2)多返回值

func swap(a, b int) (int, int) {
    return b, a
}

(3)可变参数

func sum(nums ...int) int {
    total := 0
    for _, num := range nums {
        total += num
    }
    return total
}

9. 指针

var p *int
num := 100
p = &num
fmt.Println(*p) // 100

10. 结构体

type Person struct {
    Name string
    Age  int
}

p := Person{"Alice", 25}
fmt.Println(p.Name)

11. 接口

type Speaker interface {
    Speak()
}

type Dog struct{}

func (d Dog) Speak() {
    fmt.Println("Woof!")
}

var s Speaker = Dog{}
s.Speak()

12. 并发(Goroutines & Channels)

(1)Goroutines

go func() {
    fmt.Println("Hello from Goroutine!")
}()

(2)Channel

ch := make(chan int)
go func() {
    ch <- 10
}()
fmt.Println(<-ch) // 10

13. 参考资料

发表回复 0

Your email address will not be published. Required fields are marked *