这是我参与「第五届青训营 」笔记创作活动的第1天
一、本堂课重点内容:
- 本堂课的知识要点有哪些?
变量,if else,循环,switch,数组,切片,map,range,函数,指针,结构体,结构体方法,错误处理,字符串操作,字符串格式化,JSON,数字信息
二、详细知识点介绍:
-
本堂课介绍了哪些知识点?
-
1.变量 定义变量的几种方式
var age int = 18//定义int var a = "string"//定义string f := a + "f"//+号拼接 const s string = "constant"//定义常量,自动确定类型 -
2.if else
if a < 20//与Java相似,但是if后面没有括号 -
3.循环
只有for循环
for i := 0; i <= 10; i++ { sum += i } -
4.switch
不需要加break,功能强大,可以case字符串,结构体等等,取代if else
-
5.数组
var n [10] int//定义int数组
很少用
-
6.切片
s := make([]type, len)//type类型,len长度 s = append(s,"d")//加元素,扩容,赋值 fmt.Println(s[2:5])//打印第二到第五个元素,不包括第五个 -
7.map
m := make(map[String] int)//string是key,int是value m["one"] = 1//写入 delete[m,"one"]//删除 -
8.range
遍历map,k是key,v是value
- 9.函数
函数多返回两个值,这里返回String v和bool ok
- 10.指针
对常用参数进行修改,运算时要加*号
- 11.结构体
带类型字段的集合
初始化字段
-
12.结构体方法
func (u user ) checkPassword( password string ) bool { return u.password == password }
Golang里面可以为结构体去定义一些方法。u user为结构体,引入字符串passworld,返回bool值。在实现结构体的方法的时候也有两种写法,一种是带指针,一种是不带指针。带指针,可以对这个结构体去做修改。不带指针,无法对结构体进行修改。
-
13.错误处理
if err != nil { fmt.Println( err)return }
在函数实现的时候, return需要同时returm两个值,出现错误,return error。没有错误, return 结果。
- 14.字符串操作
contains判断一个字符串里面是否有包含另一个字符串,count字符串计数, index查找某个字符串的位置,join 连接多个字符串,replace替换字符串。
-
15.字符串格式化
fmt . Printf( "s=%vin" , s)// s=hello fmt. Printf( " n=%vin", n)//n=123 fmt . Printf( " p=%vin" , p)// p={1 2} fmt . Printf( " p=%+vin" , p)// p={x :1 y : 2] fmt .Printf( " p=%#vin" , p)// p=main .pointix :l, 2 y:2}
用%v来打印任意类型的变量,%+v打印详细结果,%#v更详细。
- 16.JSON
对于一个结构体,使用JSON.marshaler去序列化,变成一个JSON的字符串。
- 17.数字信息
用parselnt或者parseFloat来将一个字符串转化为int或float。Atoi可以把一个十进制字符串转成数字。itoA可以把数字转成字符串。
三、实践练习例子:
- 有什么实践举例帮助理解知识点?
猜谜游戏,在线字典,SOCKS5代理
四、课后个人总结:
- 本章有什么知识点不容易掌握?
go语言的基础知识需要加强记忆,多多实践,要能灵活运用map,range,结构体等常用的语法要能熟练使用
- 什么地方容易与其他内容混淆?
go语言语法与java用很多地方不同,也用很多类似的地方,比如for循环,go语言中for后面不带括号,java中需要添加括号,但大体实现流程相似。