Go 基础用法

关于 go 基础语法简单教程。

Go语言基本用法

变量

在Go语言中,变量是用来存储数据的容器。变量声明的一般形式是使用 var 关键字,后面跟着变量名和变量类型。

1
var variableName variableType
1
2
var x int = 10
x := 10

在这种情况下,Go语言会自动推断出 x 的类型。

函数

函数在Go语言中使用func关键字定义。函数可以有参数和返回值。例如:

1
2
3
func add(x int, y int) int {
return x + y
}

选择结构

Go语言中的选择结构主要是ifswitch。例如:

1
2
3
4
5
if x > 0 {
fmt.Println("x is positive")
} else {
fmt.Println("x is not positive")
}

循环结构

Go语言中的循环结构主要是for。例如:

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

切片

你可以使用make函数来创建一个切片:

1
s := make([]int, 5) // 创建一个长度为5的整数切片

访问切片元素

你可以使用索引来访问切片的元素:

1
2
s[0] = 1 // 设置第一个元素的值为1
fmt.Println(s[0]) // 输出1

切片长度和容量

你可以使用len函数来获取切片的长度,使用cap函数来获取切片的容量:

1
2
fmt.Println(len(s)) // 输出5
fmt.Println(cap(s)) // 输出5

添加元素到切片

你可以使用append函数来向切片添加元素:

1
s = append(s, 6) // 在切片的末尾添加一个元素6

切片的切片

你可以使用[i:j]的方式来获取切片的一个子切片:

1
t := s[1:3] // 获取s的第2个到第3个元素组成的切片

集合

你可以使用make函数来创建一个集合:

1
m := make(map[string]int) // 创建一个键类型为字符串,值类型为整数的集合

访问集合元素

你可以使用键来访问集合的元素:

1
2
m["hello"] = 1 // 设置键为"hello"的元素的值为1
fmt.Println(m["hello"]) // 输出1

检查键是否存在

当你访问一个不存在的键时,集合会返回该类型的零值。你可以使用两个值的形式来检查一个键是否存在:

1
2
3
4
5
6
value, exists := m["world"]
if exists {
fmt.Println(value)
} else {
fmt.Println("key does not exist")
}

删除集合元素

你可以使用delete函数来删除集合的元素:

1
delete(m, "hello") // 删除键为"hello"的元素

接口

在Go语言中,接口是一种类型,它定义了一组方法,但是这些方法不包含实现。以下是一些基本的使用方法:

你可以使用type关键字和interface关键字来定义一个接口:

1
2
3
type Shape interface {
Area() float64
}

这个接口表示任何具有Area方法的类型都满足Shape接口。

实现接口

在Go语言中,接口的实现是隐式的。只要一个类型包含了接口所有的方法,那么它就实现了这个接口。例如:

1
2
3
4
5
6
7
type Circle struct {
Radius float64
}

func (c Circle) Area() float64 {
return math.Pi * c.Radius * c.Radius
}

在这个例子中,Circle类型就实现了Shape接口,因为它定义了Area方法。

使用接口

你可以使用接口类型的变量来存储实现了该接口的任何值:

1
2
var s Shape = Circle{5.0}
fmt.Println(s.Area()) // 输出78.53981633974483

指针

在Go语言中,可以使用*T的形式来声明一个指针,其中T是指针指向的值的类型。例如:

1
var p *int

获取变量的内存地址

可以使用&操作符来获取一个变量的内存地址。例如:

1
2
var x int = 2
p = &x

使用指针访问值

可以使用*操作符来访问指针指向的值。例如:

1
fmt.Println(*p) // 输出2

Go 基础用法
https://cofallen.github.io/2024/07/15/go-test/
作者
cofallen
发布于
2024年7月15日
更新于
2024年7月16日
许可协议