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

1 基本语法

1.1 变量

Go语言是一门强类型语言,每一个变量都有它自己的变量类型。 常见的变量类型包括整数int、浮点型float、布尔型bool等。 Go语言声明变量的方式有两种,一种通过var name 变量类型 =的形式,还可以通过变量 :=的方式进行声明。同时可以使用const替代var使来声明常量。

1.2 循环结构

Go语言只有for一种循环

js 复制代码
for{
  	fmt.Println("Go")
    break
}//死循环

for i:=0;i<5;i++{
  	fmt.Println("Go")
}

1.3 判断结构

Go语言的判断结构if else与c语言类型,但Go不需要()将判别式括起来且if后必须跟{}。

js 复制代码
if a>b {
    fmt.Println(a)
}else{
    fmt.Println(b)
}

1.4 Switch语句

在Go语言中,Switch不会像c语言一样不遇到break就继续往下执行。Go语言的Switch后可以使用任意变量并且可以在case中添加条件分支。

js 复制代码
	a := 2
	switch a {
	case 1:
		fmt.Println("1")
	case 2:
		fmt.Println("2")
	default:
		fmt.Println("0")
	}

	switch {
	case a < 12:
		fmt.Println("small")
	default:
		fmt.Println("big")

1.5 数组和切片

数组是个具有编号且长度固定的元素序列,声明方式和c语言一样,而在实际使用中,更常用切片。

js 复制代码
    var arr[5]int = {1,2,3,4,5}

切片可以任意更改长度的数组,可以通过make创建切片,append添加元素,使用起来更方便。

js 复制代码
    s := make([]string,3)
    s[0] = 'a'
    s[1] = 'b'
    s[2] = 'c'
    s = append(s.'d')//s = {'a''b''c''d'}

1.6 函数

Go定义函数时使用func关键字,并且函数可以返回多个值。

js 复制代码
func add(a int, b int) int {
	return a + b
}

func exists(m map[string]string, k string) (v string, ok bool) {
	v, ok = m[k]
	return v, ok
}

func main() {
	sum := add(1, 2) 
	
        v, ok := exists(map[string]string{"a": "A"}, "a")
}

1.6 指针

指针的主要用于对函数中传入的参数进行修改。

js 复制代码
func add(n *int) {
	*n += 2
}
func main() {
	n := 5
	add(&n)
	fmt.Println(n) // 7
}

1.7 结构体

结构体的话是带类型的字段的集合。声明方式与c语言相似。

js 复制代码
type user struct {
	name     string
	password string
}

2 常用特性

2.1 并发

Go语言在并发编程方面比绝大多数语言要简洁不少,golang的并发执行单元是一种称为goroutine的协程。golang中实现协程间通讯有两种:(1)共享内存型,即使用全局变量+mutex锁来实现数据共享;(2)消息传递型,即使用一种独有的channel机制进行异步通讯。

2.2 错误处理

Go语言使用多值返回的方式处理错误,通常最后一个返回值是错误值。通过使用error类型和panic、recover机制,可以更好地处理错误和异常情况。

2.3 接口与实现

Go语言中的接口由方法签名组成,一个类型只要实现了某个接口的所有方法,就被认为实现了该接口。通过接口,可以实现多态和组合等设计模式。

相关推荐
柠檬柠檬1 小时前
Go 语言入门指南:基础语法和常用特性解析 | 豆包MarsCode AI刷题
青训营笔记
用户967136399651 小时前
计算最小步长丨豆包MarsCodeAI刷题
青训营笔记
用户529757993547217 小时前
字节跳动青训营刷题笔记2| 豆包MarsCode AI刷题
青训营笔记
clearcold1 天前
浅谈对LangChain中Model I/O的见解 | 豆包MarsCode AI刷题
青训营笔记
夭要7夜宵1 天前
【字节青训营】 Go 进阶语言:并发概述、Goroutine、Channel、协程池 | 豆包MarsCode AI刷题
青训营笔记
用户336901104442 天前
数字分组求和题解 | 豆包MarsCode AI刷题
青训营笔记
dnxb1232 天前
GO语言工程实践课后作业:实现思路、代码以及路径记录 | 豆包MarsCode AI刷题
青训营笔记
用户916357440952 天前
AI刷题-动态规划“DNA序列编辑距离” | 豆包MarsCode AI刷题
青训营笔记
热的棒打鲜橙2 天前
数字分组求偶数和 | 豆包MarsCode AI刷题
青训营笔记
JinY142 天前
Go 语言入门指南:基础语法和常用特性解析 | 豆包MarsCode AI刷题
青训营笔记