
获得徽章 0
- #青训营 x 字节后端训练营#
学习一下网络:
由上到下分为4层:
应用层,由使用因特网通信来完成任务的软件单元组成,如客户机和服务器,使用FTP/SSH的软件等实用软件,HTTP,DNS,FTP
传输层,接受来自应用层的报文,确保以正确格式传输,常常切片标记,到了目的地的传输层才按标记过的顺序组装,TCP,UDP
(这是为了防止长报文阻塞其他报文流)
网络层,决定 分组(即上面切片的片段)的下一个发送方向,使用路由器的转发表来达到这一目的,选路线,IP
链路层,传送分组(实际传输),有关连接网络的硬件处理
这种传输的方式类似于现实生活中的快递,一样物品在包装过后,经过一系列中转站,最终运到买方,然后再进行拆包装,得到了最后那个原来开始的物品,才算运输完成
路由器:在链路层和网络层上
HTTPS 是在HTTP基础上加入了SSH展开评论1 - #青训营 x 字节后端训练营#
第8天:深入理解go的切片
切片是对数组的某一连续片段的描述,正如其字面意思一样,切片可以对数组 切,也可以对切片 切,它可看成由三部分组成,指向底层数组的指针,长度len,容量cap,
通常使用切片而不是数组,在函数内传入数组,实际上不会改变原数组,只是传入一个临时副本,但传入切片就可以改变原切片的元素,但其实传入的还是一个副本,只是这个切片副本的那个指向底层数组的指针与原切片相同,但仅此而已,当试图对函数内的副本切片进行诸如扩容等有关len,cap的操作是不会反映在原切片上的展开评论1 - #青训营 x 字节后端训练营#
需先导包strconv
类型转换:
数值型:
数值类型(被转换对象) 例如:float32(15)
字符串型:
A. 字符串转整数: 使用 strconv.Atoi(string 对象)函数,返回两个值,第一个为整型值,第二个是可能的错误(使用_忽略)
B. 整数转字符串: strconv.Itoa(int 对象)一个返回值string
strconv.FormatInt(int 64,base int)//base基数,几位
C. 字符串转浮点数:strconv.ParseFloat(string对象,64/32)类A两个返回值,64代表多少位
D.浮点数转换为字符串:strconv.FormatFloat(float64对象,'f',2,64)//第一个需转换为64位的,第三个参数2表示保留几位 第二个是格式 不详解
E.字节切片与字符串互转:string([]byte对象) []byte(string对象)
接口型:
类型断言:interface对象.(type)
返回两值,type 和 bool ok(转化成功则true)
类型转换:较为复杂。。。。。
string = fmt.Sprintf("%Nd",数据)//格式化数据为字符串 d为整型
string = fmt.Sprint(int)//非格式化转字符串展开评论1 - #青训营 x 字节后端训练营#
init()函数 在执行main()前进行初始化
多个文件的init()执行顺序,最内层导包的init()逐步执行到主文件的init()(对于不同包)
init函数先于main函数自动执行,不能被其他函数调用;
init函数没有输入参数、返回值;
每个包可以有多个init函数;
包的每个源文件也可以有多个init函数;
*同一个包*的init执行顺序,golang没有明确定义,编程时要注意程序不要依赖这个执行顺序。展开评论1 - #青训营 x 字节后端训练营#
再次回顾一下结构体吧
对结构体的成员访问,可以
1 结构体.成员
2 * &结构体(指向结构体的指针).成员
3 * &结构体.成员(指向结构体成员的指针)
相邻的成员类型如果相同的话可以被合并到一行
一个命名为S的结构体类型将不能再包含S类型的成员 可以包含*S指针类型的成员
较大的结构体通常会用指针的方式传入和返回
可比较的结构体类型和其他可比较的类型一样,可以用于map的key类型
结构体的嵌套(有种继承的味道)
Go语言有一个特性让我们只声明一个成员对应的数据类型而不指名成员的名字;这类成员就叫匿名成员。匿名成员的数据类型必须是命名的类型或指向一个命名的类型的指针。展开评论1 - #青训营 x 字节后端训练营#
了解一下集合Map:无序的键值对的集合
简概:
定义:使用make(map[键类型]值类型, 初始容量)函数
使用map: 例:
m := map[键类型]值类型{}
m[键]=值 //修改
delete(m, "banana")//删除展开评论2 - #青训营 x 字节后端训练营#
第三天: 搭建了go环境和vscode插件,感觉人傻了,特别是go推出的包管理,奇奇怪怪的,怎么就不能像c或java一样任意生成呢,现在还是有些懵逼这mod。评论1 - #青训营 x 字节后端训练营#
第4天:Printf()c语言用法,但是Println()却是类似于Java的println用法,不用写%d什么的格式化,unsafe.Sizeof()返回数据大小,len()可返回长度,尽管字符串数据是16位字节,但是其由两部分组成:指针和表示字符串长度的整数,各8位,通常a=”xxx“赋值的是一个指针,仅8位字节。
const(//这是枚举
a=iota//iota记录常量个数,从0开始
b//没写的默认是上一行的表达式 这里iota+=1
c
)//但iota的增加仅在每个const内,新的会重新从0开始计数
所谓++或者--与c语言有很大不同,go没有左加的说法,而且例如i++不是一个表达式,也就是说他不能求值,他只是一个语句(能被编译器识别),没有接受者
switch case也做了些简化,不用写break,会默认有break,而且就连switch后面的变量都可以省略,只要case后面是一个判断表达式就行,就有点像学c语言第一次接触到switch case 的想当然以为的错误想法,这里变成正确的展开评论1