从0解构tinyWeb项目--(Day:4)

0 阅读2分钟

今日目标

image.png

今日内容

今天学习一下go语言的基础语法,因为有c语言的基础,就用类比的方法学习了,由于对于我觉得对于不同语言其实多用就会了,只说一下最简单地差别吧,关键还是后期多用

声明变量

①var a int=5 ②a:=5 ③const PI=1

可以看到这三种变量声明,首先①肯定是最基础的对比c语言int a=5的用法,类型是写在后面的

②是go语言声明的简便用法,这个也是很方便可以自动判断类型

go语言句末不用写分号,系统会自动帮你加(所以你写也行),这个也要适应一会

函数(go语言可以有多返回值)

是的,最直观的差别就是go语言的函数有多返回值

func GetIp(s string)(int,error){

if s=="" {return "",fmt.Error("IP为空")}

return s,nil

}

首先这个s string仍然类型写在后面,然后后面还会有一个(返回值类型1,返回值类型2)这样的标注,最后如果没错错误的话,error那一栏就是nil,而且是不能省略的,return s,nil。当然举一反三的话就知道了error!=nil就是错误时的判断条件

struct

type Person struct{Name string; Age int}

p:=Person{Name:"任涵",Age:20}

这个不多说了

方法

这个目前还没遇到 image.png

error处理

前面提到返回值有多个,其实就是有error处理,就变成显性的了你必须要面对,一定程度上就会避免忘记错误处理的可能性

result,err=GetIp("")

if err!=nil{

fmt.Println("出错:",err)

return

}

slice(类似动态数组)

1.已知具体元素时

nums:=[]int{1,2,3}

2.只指定长度(元素默认为0)

nums:=make([]int,5)

这个生成的数组就是{0,0,0,0,0}

3.只定义数组

var nums []int

nums=append(nums,1)

nums=append(nums,2)

这个就是依次加数字

第一次append后数组是{1}

第二次append后为{1,2}

map(哈希表)

哈希表不需要像c语言一样定义

m:=map[string]int{"张三":90 "李四":80 }

指针

和c差不多遇到再学

练习

写一个 VisitStats 结构体

联想截图_20260416170829.jpg

写一个带 error 返回值的函数

联想截图_20260416173756.jpg

用 map 统计字符出现次数

联想截图_20260416192836.jpg