【golang学习笔记】新奇语法

1、变量和数组的声明

var关键字var 是 variable 的缩写,意为"变量"。它用于声明一个或多个变量。

Go 复制代码
//var 变量名 类型
var a int
var a []int

//同上+赋初值
var a int=100


//自行检测
var a=100
var a=[]int{1,2,3......}

//省略var自行检测
a:=100
a:=[]int{1,2,3......}

2、const常量和枚举

使用const代替var即可定义一个只读属性的变量

Go 复制代码
//显式的定义
const a int=100

//隐式的定义
const a=100

枚举:

Go 复制代码
const(
   a=10
   b="hello"
)

iota 是一个特殊的常量生成器,用于在const块中创建一系列的常量。iota 在每个const声明中重置为0,并在每个后续的const声明中自动增加1

cpp 复制代码
const (
	A = iota//0
	B       //1
	C       //2
)

const (
	A,a = iota,iota+1//0 1
	B,b              //1,2
	C,c              //2,3
)

const (
	A, a = iota * 10, (iota + 1) * 10//0 10
	B, b                             //10 20
	C, c=iota*100,(iota+1)*100       //200 300
	D,d                              //300 400
)

3、函数

func 的全称是 "function",意为"函数"。它用于定义函数的名称、参数列表、返回值以及函数体。

Go 复制代码
func functionName(parameter1 type1, parameter2 type2) returnType {
    // 函数体
}
  • functionName 是函数的名称。
  • parameter1parameter2 是函数的参数,后面跟着它们的类型 type1type2
  • returnType 是函数返回值的类型。

返回值为多个:

Go 复制代码
func swap(a int, b int) (int, int) {
	return b, a
}

4、defer延迟函数

defer 是一个关键字,用于确保在函数执行结束前执行一段代码。通常用于释放资源,比如关闭文件、网络连接、解锁互斥锁等。

cpp 复制代码
func mprint() {
	fmt.Println("defer call back")
}
func test() {
	defer mprint()
}

执行流程:执行到defer时将加defer关键字的函数时压栈,函数生命周期结束时弹栈并执行函数。

5、循环

Go 复制代码
for i:=0;i<10;i++{
	fmt.Println(i);
}

range-based-for:

Go 复制代码
a:=[]int{1,2,3,4}
for index,value:=range a{
	fmt.Println(index,value)
}

6、slice切片(动态数组)和map

(1)slice

未注明大小的数组即为切片slice

定义切片:

Go 复制代码
var a []int

b:=[]int{1,2,3}

对于切片的make函数:

make 函数是一个内建函数,用于创建切片(slice)、映射(map)和通道(channel)的实例。make 函数的行为根据类型不同而有所差异,但它总是返回一个类型正确的初始化值

  • make([]T, length, capacity):创建一个切片,其中 T 是切片中元素的类型,length 是切片的初始长度,capacity 是切片的初始容量。如果省略 capacity 参数,则默认为 length
  • make([]T, length):创建一个切片,长度和容量相等。
Go 复制代码
s := make([]int, 5)  // 创建一个长度为5,容量为5的切片
s := make([]int, 5, 10)  // 创建一个长度为5,容量为10的切片

子串浅拷贝:

Go 复制代码
a := []int{1, 2, 3, 4, 5}
b := a[1:3]
fmt.Println(b)

深拷贝:

Go 复制代码
a := []int{1, 2, 3, 4, 5}
var b []int = make([]int, 5)
copy(b, a)
a[1] = 100
fmt.Println(b)

追加:

Go 复制代码
b = append(b, 1)

(2)map

声明:

Go 复制代码
var a map[string]string

a:=make(map[string]string)

c := map[int]string{
		1: "C++",
		2: "JAVA",
		3: "Python",
	}
相关推荐
云上艺旅7 小时前
K8S学习之基础七十四:部署在线书店bookinfo
学习·云原生·容器·kubernetes
你觉得2057 小时前
哈尔滨工业大学DeepSeek公开课:探索大模型原理、技术与应用从GPT到DeepSeek|附视频与讲义下载方法
大数据·人工智能·python·gpt·学习·机器学习·aigc
A旧城以西9 小时前
数据结构(JAVA)单向,双向链表
java·开发语言·数据结构·学习·链表·intellij-idea·idea
无所谓จุ๊บ9 小时前
VTK知识学习(50)- 交互与Widget(一)
学习·vtk
FAREWELL000759 小时前
C#核心学习(七)面向对象--封装(6)C#中的拓展方法与运算符重载: 让代码更“聪明”的魔法
学习·c#·面向对象·运算符重载·oop·拓展方法
吴梓穆9 小时前
UE5学习笔记 FPS游戏制作38 继承标准UI
笔记·学习·ue5
Three~stone9 小时前
MySQL学习集--DDL
数据库·sql·学习
齐尹秦10 小时前
HTML 音频(Audio)学习笔记
学习
V---scwantop---信10 小时前
英文字体:大胆都市街头Y2Y涂鸦风格品牌海报专辑封面服装字体 Chrome TM – Graffiti Font
笔记·字体
瞌睡不来10 小时前
(学习总结32)Linux 基础 IO
linux·学习·io