这是我参与「第五届青训营 」伴学笔记创作活动的第1天
本文是站在一个有其他语言基础的学生的角度来进行
一、本堂课重点内容:
这节课讲的就是Go的语法以及小项目还有实战内容
二、详细知识点介绍:
环境配置
首先是Go的下载需要访问( go.dev/ ) ,点击 Download ,下载对应平台安装包 我这里是Windows10,所以选择64位,安装版的比较方便一点(如下图go1.19.5.windows-amd64.msi
然后就是开发环境了,如果选择Goland,那么需要做一个学生认证,用学生邮箱认证或者学信网认证( JetBrains 学习产品 ) 如果选择VS Code的话就简单的多,因为VS免费,只需要下载一个Go的拓展即可,如下图
不过这还没有结束,因为有一个问题,那就是可能报错如果运行时报:
connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.
那需要添加一下第三方代理
我这里用的是七牛的代理
使用cmd运行这个代码就好了:
go env -w GOPROXY=https://goproxy.cn
如果运行这段代码出问题,那么可以重启电脑,如果还不行,那么说明Go安装不成功
Go语法
这里其实简单的多,因为之前已经学过很多编程语言了。 可以直接克隆一下语法仓库去运行,敲一敲 github.com/wangkechun/… 点击github链接克隆课程示例项目
里面基本上涵盖了所有的语法
可能半个小时就能学完所有语法
三、实践练习例子:
这里就简单说几个个人遇到的新语言的不同点好了
1var
首先是定义类型,不再是传统的
int a =10;
char这些了
Go语言不太一样,首先他是反着来的,并且可以直接写value,不需要定义具体的类型,Go可以自动识别,比如说
var b, c int = 1, 2
var a = "initial"
2if
在写 if-else 的时候 else 必须要和 if 的后半个花括号写到同一行,不能换行
不然就会报错
示例:
if num := 9; num < 0 {
fmt.Println(num, "is negative")
} else if num < 10 {
fmt.Println(num, "has 1 digit")
} else {
fmt.Println(num, "has multiple digits")
}
注:else 语句可以直接配套 if 语句使用,else 后面是没有加判断条件的,且不能加判断条件,否则会编译错误。如果需要加判断条件需要用else if
3switch
switch语句在go里面是比较常用的,毕竟在Go里面花了毕竟多的时间去讲,它类似于if 语句,用于基于不同条件执行不同动作。 比如说:
switch {
case t.Hour() < 12:
fmt.Println("It's before noon")
default:
fmt.Println("It's after noon")
}
另外Go的结构体跟之前的变化不大
type user struct {
name string
password string
}
4数组
数组这个跟其他语言差别没有很大,不过也是可以方便一点,在声明的时候快速初始化数组,比如说:
var i,j,k int
balance := [5]float32{1000.0, 2.0, 3.4, 7.0, 50.0}
5指针
指针变量指向一个值的内存地址
var var_name *var-type
Go的指针跟C变化不大,就是空指针用nil表示
四、课后个人总结: 首先Go这个代码从语法上来说可能没有特别的那么难以接受,不过今天才是第一天,可能还没体验到网上说的Go难上手,另外就是第一次写长篇blog,真折磨啊,哭! 另外其实感觉好像,编程语言学过之后,再学就容易一些了。 在var方面Go语言不太一样,首先他是反着来的,并且可以直接写value,不需要定义具体的类型,Go可以自动识别
另外猜字游戏还是挺有意思的并且一直升级,能循序渐进的来 至于sock5,上去就来一百多行的代码,感觉挺有挑战的,并且直接跟http原理之前的学习打通了
五、引用参考: