go语言基础语法2 | 青训营笔记

67 阅读2分钟

6结构体和方法:

结构体是一种自定义的数据类型,可以包含多个字段。可以定义结构体类型,并为结构体类型定义方法。结构体的定义如下:

type Person struct {
    name string
    age  int
}

func (p Person) sayHello() {
    fmt.Println("Hello, my name is", p.name)
}

上述代码定义了一个名为Person的结构体类型,包含name和age两个字段。然后,通过使用func关键字和接收者(receiver)将sayHello方法与Person类型关联起来。方法可以在结构体实例上调用,例如:

person := Person{name: "Alice", age: 25}
person.sayHello() // 输出:Hello, my name is Alice

7指针:

Go语言中的函数传参都是值拷贝,当我们想要修改某个变量的时候,我们可以创建一个指向该变量地址的指针变量。传递数据使用指针,而无须拷贝数据。类型指针不能进行偏移和运算。Go语言中的指针操作非常简单,只需要记住两个符号:&(取地址)和*(根据地址取值)。 每个变量在运行时都拥有一个地址,这个地址代表变量在内存中的位置。Go语言中使用&字符放在变量前面对变量进行“取地址”操作。 Go语言中的值类型(int、float、bool、string、array、struct)都有对应的指针类型,如:*int、*int64、string等。 Go语言支持指针类型。指针是存储变量内存地址的变量。可以使用&操作符获取变量的地址,使用操作符获取指针指向的变量的值。例如:

x := 10
ptr := &x // 获取x的地址并赋值给ptr
fmt.Println(*ptr) // 输出:10,*ptr获取指针ptr指向的值

8并发:

Go语言内置了轻量级的并发支持,称为goroutine。可以使用关键字go在函数调用前启动一个新的goroutine。通过使用通道(channel)进行goroutine之间的通信和同步。例如:

func printMessage(msg string) {
    fmt.Println(msg)
}

func main() {
    go printMessage("Hello") // 启动一个新的goroutine
    printMessage("World") // 在主goroutine中执行
}

上述代码在主goroutine中启动了一个新的goroutine,同时打印出"Hello"和"World"。

这些是Go语言的基础语法概述。