这是我参与「第五届青训营」笔记创作活动的第1天
一、本堂课重点内容:
- 变量
- 数组
- 字符串
- 切片
- 函数
- 错误
- 结构体
- 指针
二、详细知识点介绍:
- 变量的定义
- 函数的用法
- 指针和结构体
- 错误
三、实践练习例子:
- simpledict的小项目挺有意思
四、课后个人总结:
-
包名和函数名要一样
-
赋值时的类型推导,:= 可省略定义类型
-
变量类型后置
-
var定义变量 ,
var name type | var name = value -
字符串支持+连接操作
-
常量定义 const name = value
-
支持break,continue语法
-
数组定义
var name []typeex:var a []int数组不可变 Slice底层:存储容量,长度,和指向数组的指针,所以对slice操作完必须赋值回原数组 -
切片不支持负数索引
-
可以不用定义,直接创建,语法 make(),创建切片 make([]type, length)
-
方法直接调用,copy(),len()
-
if,for等语句不需要括号,直接写条件
- if 关键字后面,可以跟多个语句,用分号切开
-
map[key type]value type{} -
range快速遍历 map m
for k := range m { fmt.println("key:",k)}for k,v := range m { fmt.println("key:",k,"value:",v)}map 遍历完全无序,随机 -
函数定义
func name(variable name, ...) returnType { body } -
指针: 用途: 对参数进行修改,作用域的问题,golang的变量定义应该不是引用类型的
-
结构体 struct
name string password string }``` - 访问和修改用. , 结构体传参要用指针 - 类成员函数,`func (struct name) funcName(参数) returnType {}` 带指针,能修改; 不带指针不能修改 -
错误处理:使用一个单独的返回值来传递错误信息
import "error"- 能知道哪个函数出现了错误
- 能用 if else 返回错误
- nil是空,
errors.New("not found")
-
字符串操作,不是字符串对象调用去调用方法的形式,而是
strings.method(object,...)- 格式化输出,printf是%语法 ,println是逗号语法
- 处理json,结构体公开字段的首字母都是大写的,就能JSON.marshaler去序列化,变成json字符串
- 语法:
json.method(object, ...), 传结构体记得取地址
-
数字解析: import "strconv" ,两个返回值(处理结果,error)
strconv.ParseInt(), Atoi,itoA 数字和字符串的互相转化