Go 语言入门指南:基础语法和常用特性解析 | 豆包MarsCode AI刷题

53 阅读2分钟

Go(又称Golang)是由Google开发的一种编译型、并发型、具有垃圾回收功能的编程语言。自2009年推出以来,凭借其简洁的语法、强大的并发支持和高性能,Go语言迅速在云计算、微服务、系统编程等领域崭露头角。

一、基础语法

1. 环境搭建

  • 安装Go:访问Go官方网站下载并安装适用于你操作系统的Go版本。
  • 设置环境变量:确保GOPATHGOROOT正确设置,并将Go的bin目录添加到系统的PATH环境变量中。
  • 验证安装:在终端输入go version,查看Go版本信息,确认安装成功。

2. Hello, World!

	package main

	 

	import "fmt"

	 

	func main() {

	    fmt.Println("Hello, World!")

	}
  • 包声明:每个Go文件都以package关键字开始,声明该文件所属的包。
  • 导入包:使用import关键字导入标准库或其他包。
  • 函数main函数是程序的入口点。

3. 变量和常量

  • 变量声明

    	var a int
    
    	var b, c int = 1, 2
    
    	d := 3  // 简短声明,仅适用于函数内部
    
  • 常量

    
    	const Pi = 3.14
    

4. 数据类型

Go语言支持多种数据类型,包括整型(int、uint等)、浮点型(float32、float64)、布尔型(bool)、字符串(string)等。

5. 控制结构

  • 条件语句

    
    	if x > 0 {
    
    	    fmt.Println("x is positive")
    
    	} else if x == 0 {
    
    	    fmt.Println("x is zero")
    
    	} else {
    
    	    fmt.Println("x is negative")
    
    	}
    
  • 循环

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

    Go还支持for range循环,用于遍历数组、切片、映射或字符串。

二、常用特性

1. 并发编程

Go语言原生支持并发编程,通过goroutine和channel实现。

  • goroutine:轻量级线程,由Go运行时管理。

    
    	go func() {
    
    	    fmt.Println("Hello from goroutine")
    
    	}()
    
  • channel:用于在goroutine之间传递数据,实现同步。

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

2. 切片(Slice)

切片是动态数组,比数组更灵活。


	s := []int{1, 2, 3}

	s = append(s, 4, 5)  // 动态添加元素

3. 映射(Map)

映射是键值对的集合。


	m := make(map[string]int)

	m["age"] = 30

	fmt.Println(m["age"])

4. 接口(Interface)

Go语言的接口是隐式实现的,只需满足接口中的方法签名即可。


	type Speaker interface {

	    Speak() string

	}

	 

	type Dog struct{}

	 

	func (d Dog) Speak() string {

	    return "Woof!"

	}

	 

	func main() {

	    var s Speaker = Dog{}

	    fmt.Println(s.Speak())

	}

5. 错误处理

Go语言通过内置的错误类型error处理错误。


	func mightFail() (string, error) {

	    return "", errors.New("something went wrong")

	}

	 

	func main() {

	    result, err := mightFail()

	    if err != nil {

	        fmt.Println("Error:", err)

	        return

	    }

	    fmt.Println("Result:", result)

	}

6. 格式化输入输出

Go语言的fmt包提供了丰富的格式化输入输出功能。

	name := "Alice"

	age := 30

	fmt.Printf("Name: %s, Age: %d\n", name, age)