1 变量和常量
Author: zihao
Copyright Notice: All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.
Related Articles

2021-05-06
8 函数
8 函数 函数是组织好的、可重复使用的、用于执行指定任务的代码块 Go 中支持函数、匿名函数和闭包,并且函数在Go中属于”一等公民” 函数定义 具体格式: func 函数名(参数)(返回值){ 函数体 } 123456789101112 * **函数名**:*字母、数字、下划线*组成。在**同一个包内**,函数名不能重复 * **参数**:由 *参数变量和参数变量* 的类型组成,多个参数使用**逗号**隔开 * **返回值**:由 *返回值变量和其类型* 组成,也**可以只写返回值类型**,**多个返回值必须用`()`包裹**,并用逗号隔开 * **函数体**:实现指定功能的代码块* 示例: * ```go func intSum(x int, y int) int { return x +y } 函数的参数和返回值都是可选的 函数的调用 定义函数后,使用函数名()调用函数 调用有返回值的函数时,可以不接收其返回值 参数类型简写 函数参数列表 中,若相邻变量的参数相同,则可以省略左边的类型 1...

2021-05-06
7 map
7 map 无序的基于key-value的数据结构 内部使用散列表(hash)实现 Go 中的map是引用类型,必须初始化才能使用 map 定义 Go 中map基本语法 map[KeyType]ValueType KeyType : 键的类型 ValueType :键对应的值得类型 默认初始值:nil 需要使用make 分配内存 make(map[KeyType]ValueType, [cap]) cap :容量,可省略。但应该在初始化时指定一个合适的容量 map 基本使用 map 中的数据都是成对出现 示例 scoreMap := make(map[string]int, 8) scoreMap["小明"] = 90 fmt.Println(scoreMap) fmt.Println(scoreMap["小明"]) 12345678* map 支持在声明时,列表初始化 * ```go userInfo := map[string]string{ "username": &q...

2021-05-06
11 指针
11 指针 与C/C++ 中的指针不同,Go 中的指针不能进行偏移和运算,是安全指针 取地址符:& 根据指针取值:* 需要知道:指针地址、指针类型、指针取值 指针地址和指针类型 每个变量运行时都有一个地址,代表变量在内存中的位置 指针类型:*int… 取变量指针的语法:ptr := &v v : 被取地址的变量 ptr :接收地址的变量,ptr 的类型就为*T,称为T的指针类型 指针取值 对普通变量使用 & 取地址后,会获得这个变量的指针 可以对指针使用*操作,对指针取值 根据指针去内存取值 总结: 取地址操作符&和取值操作符*是一对互补操作符,&取出地址,*根据地址取出地址指向的值。 变量、指针地址、指针变量、取地址、取值的相互关系和特性如下: 对变量进行取地址(&)操作,可以获得这个变量的指针变量。 指针变量的值是指针地址。 对指针变量进行取值(*)操作,可以获得指针变量指向的原变量的值。 定义函数时,可以传入地址,使用指针传值 new 和 make Go 中对于引用类型的变量,我们在使用...

2021-05-05
4 流程控制
4 流程控制 流程控制是每种语言控制逻辑走向和执行次序的重要部分 Go 中有if 和 for, 而switch 和 goto主要是为了简化代码、降低重复代码而生,属于扩展类的流程控制 if else分支结构if 条件判断的基本写法 if 条件判断格式 if expr1{ block1 }else if expr2{ block2 }else { block3 } 12345678910111213141516171819202122232425 * ==注意:==Go 规定,`if`的**左括号**必须与`if expr`放于同一行;**右括号必须与下一个语句在同一行**#### if 条件判断特殊写法* 可以在 if 表达式前添加一个执行语句,再根据变量值判断 * 示例: * ```go package main import "fmt" func main() { if score := 65; score >= 90 { fmt.Pri...

2021-05-06
5 Array
5 Array 数组 同一种数据类型的集合 Go 中,数组从声明时就确定,使用时可以修改数组成员,但是数组大小不可变 语法:var a [3]int 数组定义 var name [size]T size 必须是常量 长度是数组类型的一部分,定义后不可变 不同长度,不可相互赋值 数组可以使用下标访问,0 - size-1 若越界,会触发访问越界,panic 数组的初始化方法一 可以使用 初始化列表 设置数组元素的值 var a [3]int //数组元素初始化为int类型的0 var b = [3]int{1,2} //使用指定的初始值完成成初始化 var c = [3]string{"北京","上海"} //指定的值完成初始化 12345678910 #### 方法二* 我们可以让编译器根据初始值的个数自行推断长度 * ```go var a = [...]int{1,2} var b = [.....

2021-05-06
9 函数进阶
9 函数进阶变量作用域全局变量 定义于函数外部,在程序整个运行周期内有效 局部变量 函数内定义的变量无法在该函数外使用 若局部变量和全局变量重名,优先访问局部变量 if 条件判断、for循环、switch语句块中定义的变量,只能在该语句块中使用 函数类型与变量定义函数类型 使用关键字type 定义一个函数类型,格式: type calculation func(int,int) int 定义了一个calculation 类型,一种函数类型,接收两个int类型参数并且返回一个int类型 满足 参数列表一致并且返回值列表一致的 都是某一函数类型 var c calculation 函数类型变量 可以 声明函数类型的变量并且为该变量赋值 func main() { var c calculation // 声明一个calculation类型的变量c c = add // 把add赋值给c fmt.Printf("type of c:%T\n",...
Comments
Announcement
keep moving in 2026




