这是我参与「第五届青训营」伴学笔记创作活动的第1天
Go语言是什么
学习一门语言,我们都要从认识这门语言开始,什么是Go语言,GO是一种拥有高性能,高并发,语法规范,简单(有很多东西他都规范好了,不像很多语言写法有很多种,在{}的使用里我感觉看着也比较舒服),学习曲线平缓的静态语言,它有着丰富的标准库(对于这一点我感觉很方便,之前在java的学习中学到javaweb,我需要下载tomcat来支持,但是对于Go来说完全不用),完美的工具链,静态链接(会产生一个exe文件)支持快速编译,跨平台(Linux等一些其他的,包括一些很少用的),垃圾回收(GC)。
使用Go语言的工具
我们认识了Go语言,就相当于我们有了炮弹,但是用什么打出去就是一个问题,所以我们要选择的是使用Go的工具,我这里用的是Goland的,我觉得他对于新手来说还是很友好的,帮你引入包并且包里的方法也会有提示,你也可以看源代码。(刚开始go mod没用好,所以大家go moudel和这个选一个)。
Go语言基础(记录一些与其他语言不太相同的)
每个语言的学习都缺少不了一个东西,那就是Hello Word,Go语言也是由main作为入口,Go由很多的包组成,注意,每一个项目下只能有一个main包。
package main
import "fmt"
func main() {
fmt.Println("Hello Word")
}
对于上面这段代码我们看到,并没有以;结尾,这就是Go不同的地方,并不一定以;结尾。fmt是我们引入的一个包(包可以引入很多有个简单写法import("")),通过包名调用方法,打印方式为Println,方法首字母大写可以在包外被调用,下面结构体的属性首字母大写也是一样。
1.变量
变量的声明和我之前所学的java不同,当时这让我不习惯了好久,Go的声明方式是将类型放在名字后面。
例:
var a int
1.1 Go有很多种声明方式
声明多个变量
var (
a int
b int
)
var a,b int
单个变量声明也可以这样写
a:=1
但是上面这种方式编译器会自动识别类型,但是只能用在函数体里。
2.切片
Go语言里有一个类型是切片,它是引用类型,在别的地方改变会改变整个的切片。值得注意的是,当我们对于一个切片进行裁剪时并命名为新的名字,对于这个片段的更改也会影响到以前的切片。
2.1切片的声明
s :=[] int {1,2,3 }
我们说过切片是引用类型,所以需要使用make来分配。
var s []type = make([]type, len)
2.2切片的一些方法
切片的剪裁(可以用来删除切片中某个元素)
s1:= arr[:] ss
向切片中追加切片
s = append(s, s1)
切片的拷贝
copy(s,s1)
3.结构体
我觉得Go中的结构体更像是java中的类,有属性,有方法,但是刚学的时候我感觉包像class。对于结构体来说他也有类似继承的方法。说起结构体,想起来了个东西,泛型(提一嘴,之后有机会写写)。
3.1结构体的声明
type User struct{
name string
password string
}
结构体里可以写指针类型的自己,但是不可以写普通的自己。如下:
这样写就是错的。
但是可以这样
3.2结构体方法
结构体方法的声明有两种,一种是带指针,一种是不带,对于带指针的方法是会修改实例本身,但是另一种只是拷贝,不会修改。而且拷贝会更浪费时间。(这里提一下函数的构建,与java不同,Go可以有多个返回值,并且可以给返回值命名,有的不需要的返回值可以用_来接收)。
func (u User)checkPassword(password string) bool {
return u.password==password
}
func (u *User)checkPassword(password string) bool {
return u.password==password
}
总结
对于Go语言的学习有了一定的认识,对于有些地方还存在不足,之后的时间会补上一些细节。
引用
青训营课程