go语言基础| 青训营

73 阅读3分钟

Go语言基础语法笔记

  1. 变量:在Go语言中,我们使用var关键字来声明变量。例如,var name string声明了一个名为name的字符串变量。如果要同时声明多个变量,可以使用,分隔,如var a, b int
var name string = "Go"
fmt.Println(name) // 输出:Go
  1. 选择:Go语言的选择结构是通过if-else实现的。例如:
if condition {
    // do something
} else {
    // do something else
}

其中condition是一个布尔表达式。

  1. 循环:Go语言只有一种循环结构,即for循环。例如:
for i := 0; i < 10; i++ {
    fmt.Println(i)
}
  1. 数组:数组是具有固定长度且元素类型相同的数据类型。例如,var arr [5]int声明了一个长度为5的整型数组。
var arr [3]int = [3]int{1, 2, 3}
fmt.Println(arr) // 输出:[1 2 3]
  1. 切片:切片是对数组的抽象,它是可变长的。例如,var slice []int声明了一个整型切片。

  2. Map:Map是一种无序的键值对的集合。例如,var m map[string]int声明了一个键为字符串、值为整数的map。

slice := []int{1, 2, 3}
fmt.Println(slice) // 输出:[1 2 3]
  1. Range:Range用于遍历数组、切片和map。例如:
for index, value := range arr {
    fmt.Println(index, value)
}
  1. 函数指针:函数指针是指向函数的指针。例如,var funcPtr *func(int) int声明了一个函数指针,该函数接收一个整数参数并返回一个整数。
func add(x int, y int) int {
    return x + y
}
var funcPtr *func(int, int) int = &add
fmt.Println((*funcPtr)(2, 3)) // 输出:5

  1. 结构体:结构体是一种复合的数据类型,可以包含多个不同类型的字段。例如:
type Person struct {
    Name string
    Age  int
}
  1. 结构体方法:在Go语言中,可以为结构体定义方法。例如:
func (p Person) SayHello() {
    fmt.Printf("Hello, my name is %s, I am %d years old\n", p.Name, p.Age)
}
  1. 错误处理:Go语言通过error接口处理错误。通常,函数会返回一个error值,如果这个值为nil,则表示没有错误;否则,表示发生了错误。
_, err := strconv.Atoi("abc")
if err != nil {
    fmt.Println(err) // 输出:strconv.Atoi: parsing "abc": invalid syntax
}
  1. 字符串操作:Go语言提供了strings包进行字符串操作,例如strings.Contains检查字符串是否包含子串,strings.Join将字符串切片连接为一个字符串等。
str := "Hello, Go!"
fmt.Println(strings.Contains(str, "Go")) // 输出:true
  1. JSON处理:Go语言提供了encoding/json包进行JSON处理。例如,json.Marshal可以将结构体编码为JSON,json.Unmarshal可以将JSON解码为结构体。
jsonStr, _ := json.Marshal(p)
fmt.Println(string(jsonStr)) // 输出:{"Name":"Alice","Age":20}
  1. 数字处理:Go语言提供了strconv包进行数字处理。例如,strconv.Atoi可以将字符串转换为整数,strconv.Itoa可以将整数转换为字符串。
numStr := "123"
num, _ := strconv.Atoi(numStr)
fmt.Println(num + 1) // 输出:124
  1. 进程解析:Go语言提供了os/exec包进行进程解析。例如,exec.Command可以执行命令并返回输出结果。
cmd := exec.Command("echo", "Hello, Go!")
output, _ := cmd.Output()
fmt.Println(string(output)) // 输出:Hello, Go!