[dev][go] 学习Golang都需要掌握什么

一 什么?

首先要了解Golang是什么。

Golang是一门计算机编程语言;可以编译成机器码的像python一样支持各种特性的高级语言。

由Google发明,发明人之一是K,就是C语言的那个K&R的K。

网站:https://golang.org/

二 安装环境

安装环境,无外乎就是安装编译器。

有两套(我知道的),一个官方的Go,一个Gcc-Go

这里不讨论GccGo。

2.1 安装

安装官方Go,有两个办法,一个是去网站下载,然后自己解压。另一个是用包管理工具yum,pacman等。

下载的话,就去这里download:https://golang.org/dl/, 然后tar解压就可以了。

之后把你解压的目录的bin,加到PATH环境变量里。然后,和使用包管理工具安装的便没有任何区别。

运行一下go,如果你能看见帮助信息,说明安装正确。

2.2 配置

配置之前,你需要理解什么是包管理,就是java(为什么是java?)里边那个包管理,不是上小结的包管理。

随便找了一个,最好读一下:http://www.runoob.com/java/java-package.html

因为接下来要建立目录结构,而目录结构需要与包结构保持一至,所以最好要懂得包的概念。不过对于不求甚解的你,依葫芦画瓢也是可以的,不懂也罢。

配置的话,

只需要配置你的workspace的路径给GOPATH环境变量就可以了,不配的话,默认在这里:~/go/

这个目录是干啥的?就是GO世界里的根目录,GO的世界都在这个根下,它不认识外边的世界。

在这个目录下,至少需要两个子目录,bin, src。src里是未来的所以代码,src也是所有go package的根。

编译,并install之后的二进制,都在bin下面。当你执行了go install 之后。

举例一个目录实例,注意观察src下的目录树,等同于package的数。

bin/
    hello                          # command executable
    outyet                         # command executable
src/
    github.com/golang/example/
        .git/                      # Git repository metadata
    hello/
        hello.go               # command source
    outyet/
        main.go                # command source
        main_test.go           # test source
    stringutil/
        reverse.go             # package source
        reverse_test.go        # test source
    golang.org/x/image/
        .git/                      # Git repository metadata
    bmp/
        reader.go              # package source
        writer.go              # package source
    ... (many more repositories and packages omitted) ...

三 使用

代码写好,并正确的放置到了目录树里边之后,就可以编译,运行了。

go run/build/install 包名。三个命令分别对应着解释执行,编译,安装三个操作。

go的程序,即可以解释执行,可以编译成二进制执行。

如,根据上面的目录结构:

go run github.com/golang/example/
go build hello
go install hello

执行过上边的命令后,在bin目录下会生成可执行程序hello。我们可以直接执行它。

生成执行程序的名字,与包名一致。

你一定要再读一下,这个,会把我上边写的东西,更生动准确的讲一下:

https://golang.org/doc/code.html

四 编码

当完成了以上三步的操作之后,我们便已经具备了go语言的运行环境了。接下来便可以开始学习编码了。

4.1 新手入门

第一个我建议阅读的不是任何书,也不是任何手册,而是这样一份剪短而清晰的指南。理论上如果你足够聪明绝顶(我还不行,我植被茂盛)的话,只看这一个也足够上手了。

https://tour.go-zh.org/welcome/1

4.2  语法规约

你一定是一个严谨的吧?不是可以跳过这里。

作为一个严谨的人,我们一定要了解每一个Go语言的每一个细节。然后再反观设计哲学,才敢写下第一行宝贵的go代码。

语法规约:https://golang.org/ref/spec

4.3 风俗习惯

入乡即要随俗,写代码这种事,有各种各样的穷讲究。命名怎么写,缩进怎么缩。入了中餐馆用筷子,入了西餐馆用刀叉,吃烤全羊用手抓。

进了Go餐馆,我们怎么吃:https://golang.org/doc/effective_go.html

4.4 库

201x年,高级语言(相对于C)最大的魅力不在于灵活的语法,不在于好看的IDE。而在于丰富的库。

这里,有一个所有库的列表,以及他们的文档:

https://golang.org/pkg/

五 实践

你需要找一份写的好的代码,读一读抄一抄。

然后,再找一个不太复杂的需求,写一写。

六 另外

6.1

另外,还有一本书,我还没看,大家都在看。我马上要去看一下(此刻的我跳过了第五小节)。。。。

https://book.douban.com/subject/27044219/

6.2

IDE是什么鬼?没听说过,我只有emacs,给你个插件要不要?

https://www.emacswiki.org/emacs/GoLangMode

6.3

DEBUG? 还不会呢。。。以后更新。。。。

6.4

内存怎么管理的?协程怎么实现的?

--!!! ... 上苍保佑吃饱了饭的人民~~~

七 完

离开了第五小节,其他的都是纸上谈兵。

原文地址:https://www.cnblogs.com/hugetong/p/10659470.html

时间: 2024-10-10 09:15:31

[dev][go] 学习Golang都需要掌握什么的相关文章

学习Golang语言(6):类型--切片

学习Golang语言(1): Hello World 学习Golang语言(2): 变量 学习Golang语言(3):类型--布尔型和数值类型 学习Golang语言(4):类型--字符串 学习Golang语言(5):类型--数组 学习Golang语言(6):类型--切片 在很多应用场景中,数组不能够满足我们的需求.在初始定义数组时,我们并不知道数组所需的长度.因此,我们需要一个大小可以动态变化的数组(动态数组) 在Go语言中,这种"动态数组"成为slice(切片). 但是实际上slic

【One by one系列】一步步学习Golang web框架Gin

一步步学习Golang web框架Gin 建立项目 go mod 管理依赖 cd $gopath\src\github.com\carfield go mod init 就可以看到在src\github.com\carfield 生成了go.mod文件 module github.com/carfield go 1.13 下载gin包 go get -u github.com/gin-gonic/gin ps:由于众所周知的原因,大概率是下不动,所以请修改代理 修改代理 go env -w GO

学习golang的历程——持续更新

学习一门语言首先hello world 1,首先建立一个目录,新建一个hello.go的文件 package main import ( "fmt" ) func main() { fmt.Println("hello world") } 2,go run hello.go [email protected] study % go run hello.go hello world 上面我们就完成了我们的基础使命.下面我们正式开始入门 在正式进入写代码之前,推荐大家使

学习golang的条件编译

昨天学习了go generate,今天学习另外一个知识点,一样是跟注释有关的知识点.golang的条件编译,也叫编译约束(build constraints). 应用场景 条件编译可以在适应不同平台操作系统的代码上体现.不同的操作系统平台,对某些特性的支持不太一样,但是往往在业务层面上的代码不会去关注,所以需要对底层的代码进行一些封装.比如,Windows和Linux的home目录是不一样的,而我们的业务需要读取home目录,那此时我们就可以用条件编译来达到效果. 条件编译的两种形式 条件编译可

深入学习golang(2)—channel

Channel 1. 概述 “网络,并发”是Go语言的两大feature.Go语言号称“互联网的C语言”,与使用传统的C语言相比,写一个Server所使用的代码更少,也更简单.写一个Server除了网络,另外就是并发,相对python等其它语言,Go对并发支持使得它有更好的性能. Goroutine和channel是Go在“并发”方面两个核心feature. Channel是goroutine之间进行通信的一种方式,它与Unix中的管道类似. Channel声明: ChannelType = (

学习云计算都要学什么?

云计算是一种基于互联网的计算方式,要实现云计算则需要一整套的技术架构去实施,包括网络.服务器.存储.虚拟化等等.云计算目前分为公有云和私有云. 两者的区别只是提供的服务的对象不同,一个是企业内部使用,一个则是面向公众.目前企业中的私有云都是通过虚拟化来实现的,建议你可以了解一下虚拟化行业的前景和发展.虚拟化目前分为服务器虚拟化(以VMware为代表).桌面虚拟化(思杰要比vmware的优势要大).应用虚拟化(以思杰为代表).学习虚拟化需要的基础: 操作系统,懂得Windows操作系统(Windo

深入学习golang(3)—类型方法

类型方法 在Go语言中,我们可以给任何类型(包括内置类型,但不包括指针和接口)定义方法.例如,在实际编程中,我们经常使用[ ]byte的切片,我们可以定义一个新的类型: type ByteSlice []byte 然后我们就可以定义方法了.例如,假如我们不想使用内建的append函数,我们可以实现一个自己的append方法: func Append(slice, data[]byte) []byte { l := len(slice) if l + len(data) > cap(slice)

大数据学习一般都学什么

大数据已经成为发展的趋势,大数据的培训学习也就应运而生,可是大数据具体学习什么内容呢,众说纷纭: 那么大数据学习到底应该掌握哪些知识呢,笔者根据自己的经验总结如下: 学习要根据自身情况来定,如果你是零基础,那就必须先从基础java开始学起(大数据支持很多开发语言,但企业用的最多的还是JAVA),接下来学习数据结构.linux系统操作.关系型数据库,夯实基础之后,再进入大数据的学习,具体可以按照如下体系: 第一阶段 CORE JAVA (加**的需重点熟练掌握,其他掌握) Java基础** 数据类

深入学习golang(4)—new与make

Go语言中的内建函数new和make是两个用于内存分配的原语(allocation primitives).对于初学者,这两者的区别也挺容易让人迷糊的.简单的说,new只分配内存,make用于slice,map,和channel的初始化. 1. new 这是一个用来分配内存的内建函数,但是与C++不一样的是,它并不初始化内存,只是将其置零.也就是说,new(T)会为T类型的新项目,分配被置零的存储,并且返回它的地址,一个类型为*T的值.在Go的术语中,其返回一个指向新分配的类型为T的指针,这个指