这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天
===================================
===
一.环境配置
go版本-go1.19.5
开发工具
goland-2022.2.2专业版
二.基础语法
1.变量
var表示变量
var 表示符 类型 = .....
var a int = 10
简写
a := 10
重点:
-
未初始化就给默认值
-
声明变量就必须使用
-
根据值自行判定变量类型
2.常量
定义语法 : const identifier type = value(同样type可以省略)
const a string = "abc"
多常量定义(变量同)
const a, b, c = 1, false, "str"
3.判断语句
if flag == true { fmt.Println(flag) }else{ continue }
重点:
-
每一个if else 都需要加大括号
-
else位置不能在新一行
-
if后面不写小括号(写了也没用)
4.循环
Go 语言的 For 循环有 3 种形式,只有其中的一种使用分号。
和 C 语言的 for 一样:
for init; condition; post { }
和 C 的 while 一样:
注:go语言没有while循环
for condition { }
和 C 的 for(;;) 一样:
for { }
-
init: 一般为赋值表达式,给控制变量赋初值;
-
condition: 关系表达式或逻辑表达式,循环控制条件;
-
post: 一般为赋值表达式,给控制变量增量或减量。
举个例子:
for num := 1; num < 10; num++ { fmt.Println(num)}
5.函数
定义格式
func function_name( [parameter list] ) [return_types] { 函数体 }
函数定义解析:
-
func:函数由 func 开始声明
-
function_name:函数名称,参数列表和返回值类型构成了函数签名。
-
parameter list:参数列表,参数就像一个占位符,当函数被调用时,你可以将值传递给参数,这个值被称为实际参数。参数列表指定的是参数类型、顺序、及参数个数。参数是可选的,也就是说函数也可以不包含参数。
-
return_types:返回类型,函数返回一列值。return_types 是该列值的数据类型。有些功能不需要返回值,这种情况下 return_types 不是必须的。
-
函数体:函数定义的代码集合。
func max(num1, num2 int) int { var result int if (num1 > num2) { result = num1 } else { result = num2 } return result}
6.数组
- 声明数组
var balance [10]float32
- 初始化数组
var balance = [5]float32{1000.0, 2.0, 3.4, 7.0, 50.0}
-
如果设置了数组的长度,我们还可以通过指定下标来初始化元素:
// 将索引为 1 和 3 的元素初始化balance := [5]float32{1:2.0,3:7.0}
7.指针
Go 语言的取地址符是 &,放到一个变量前使用就会返回相应变量的内存地址。
指针定义:
varip *int
指向整型
var a int= 20 /* 声明实际变量 */var ip *int /* 声明指针变量 */ip = &a /* 指针变量的存储地址 */
8.切片
不同与数组,切片是可变长列表
定义:
-
未指定数组定义切片
var a []int
-
make函数
var a = make([]int, 10)
9.map
键值对数据结构
定义:
m := make(map[string]int)m["one"] = 1
遍历:
for k,v := range m{ fmt.Println(k,v)}
10.结构体
定义:
type Books struct { title string author string subject string book_id int}
初始化:
// 创建一个新的结构体 fmt.Println(Books{"Go 语言", "www.runoob.com", "Go 语言教程", 6495407}) // 也可以使用 key => value 格式 fmt.Println(Books{title: "Go 语言", author: "www.runoob.com", subject: "Go 语言教程", book_id: 6495407}) // 忽略的字段为 0 或 空 fmt.Println(Books{title: "Go 语言", author: "www.runoob.com"})}
访问:
var book Books book.book_id = 10
结构体方法:
func (book Books) getid(book Books) int{ return book.book_id;}
带指针可以修改结构体
总结:第一次学习go语言,非常有特色
个人感觉go = js+c+python
go语言垃圾回收机制和处理并发早有耳闻,上手还是比较迅速,但是学习是最好伴着其他如Coland圣经一起看,做好查漏补缺才是程序员的第一步
学习时我是带着java的滤镜去看的,思想上还是比较简单,期待后续的学习