初认识Go语言(新手版)| 青训营笔记

117 阅读4分钟

这是我参与「第五届青训营」伴学笔记创作活动的第1天

Go语言是什么

学习一门语言,我们都要从认识这门语言开始,什么是Go语言,GO是一种拥有高性能,高并发,语法规范,简单(有很多东西他都规范好了,不像很多语言写法有很多种,在{}的使用里我感觉看着也比较舒服),学习曲线平缓的静态语言,它有着丰富的标准库(对于这一点我感觉很方便,之前在java的学习中学到javaweb,我需要下载tomcat来支持,但是对于Go来说完全不用),完美的工具链,静态链接(会产生一个exe文件)支持快速编译,跨平台(Linux等一些其他的,包括一些很少用的),垃圾回收(GC)。

使用Go语言的工具

我们认识了Go语言,就相当于我们有了炮弹,但是用什么打出去就是一个问题,所以我们要选择的是使用Go的工具,我这里用的是Goland的,我觉得他对于新手来说还是很友好的,帮你引入包并且包里的方法也会有提示,你也可以看源代码。(刚开始go mod没用好,所以大家go moudel和这个选一个)。

image.png

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
}

结构体里可以写指针类型的自己,但是不可以写普通的自己。如下:
这样写就是错的。

image.png

但是可以这样

image.png

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语言的学习有了一定的认识,对于有些地方还存在不足,之后的时间会补上一些细节。

引用

青训营课程