筑基期

1. Go 语言的应用场景和优势有哪些?

Go 语言是一种开源编程语言,因其简洁、高效而广受欢迎。

常见应用场景包括微服务、网络编程、云服务和分布式系统。

其优势在于并发模型(goroutinechannel)、内存管理(自动垃圾回收)、强类型系统以及跨平台编译能力。

// 示例:启动多个 goroutine
package main

import (
   "fmt"
   "sync"
)

func worker(id int, wg *sync.WaitGroup) {
   defer wg.Done()
   fmt.Printf("Worker %d starting\n", id)
   // 模拟工作
}

func main() {
   var wg sync.WaitGroup
   for i := 1; i <= 5; i++ {
       wg.Add(1)
       go worker(i, &wg)
   }
   wg.Wait()
   fmt.Println("All workers completed.")
}

2. Go 的数据类型有哪些?如何声明变量?

Go 支持多种基本数据类型,包括整型、浮点型、布尔型和字符串。

变量可以使用 var 声明,也可以使用简短声明符 :=

// 示例:声明变量
package main

import "fmt"

func main() {
   var a int = 10
   b := 20.5 // 简短声明
   c := "Hello, Go!"
   d := true

   fmt.Println(a, b, c, d)
}

3. 如何定义和使用函数?支持哪些参数和返回值类型?

Go 允许定义具有多个参数和返回值的函数。参数可以是任意类型,返回值也可以是多个。

// 示例:函数定义
package main

import "fmt"

func add(x int, y int) (int, error) {
   return x + y, nil
}

func main() {
   sum, _ := add(5, 3)
   fmt.Println("Sum:", sum)
}

4. 什么是数组和切片?它们之间有什么区别?

数组是固定大小的集合,切片是动态大小的集合。切片比数组更灵活,因为它可以根据需要动态调整大小。

// 示例:数组与切片
package main

import "fmt"

func main() {
   // 数组
   var arr [3]int = [3]int{1, 2, 3}
   fmt.Println("Array:", arr)

   // 切片
   slice := []int{1, 2, 3, 4}
   slice = append(slice, 5) // 动态添加元素
   fmt.Println("Slice:", slice)
}

5. Go 中的 map 是什么?如何创建和使用 map?

map 是一种无序的键值对集合,键必须是唯一的。可以使用内置的 make 函数创建 map

// 示例:使用 map
package main

import "fmt"

func main() {
   // 创建 map
   myMap := make(map[string]int)
   myMap["apple"] = 5
   myMap["banana"] = 3

   // 访问 map
   fmt.Println("Apple count:", myMap["apple"])

   // 删除元素
   delete(myMap, "banana")
   fmt.Println("After deletion:", myMap)
}

6. 如何使用控制结构(if、for、switch)进行流程控制?

Go 提供了 ifforswitch 控制结构,用于控制代码的执行流程。

// 示例:控制结构
package main

import "fmt"

func main() {
   // if 语句
   num := 10
   if num > 0 {
       fmt.Println("Positive number")
   }

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

   // switch 语句
   day := 3
   switch day {
   case 1:
       fmt.Println("Monday")
   case 2:
       fmt.Println("Tuesday")
   case 3:
       fmt.Println("Wednesday")
   default:
       fmt.Println("Another day")
   }
}

7. 什么是结构体(struct)?如何定义和使用结构体?

结构体是用户自定义的复合数据类型,允许将多个字段组合在一起。

// 示例:结构体定义
package main

import "fmt"

type Person struct {
   Name string
   Age  int
}

func main() {
   // 创建结构体实例
   p := Person{Name: "Alice", Age: 30}
   fmt.Println("Name:", p.Name, "Age:", p.Age)
}

results matching ""

    No results matching ""