golang新手村
文章目录
序章
笔者本身是学习Java语言的, 从去年了解了Golang,今年正式学习Golang到现在对这门语言有着深深的热爱.
就想出一个教程帮助那些想学习Golang的学习爱好者.当然可能会有些不详细或者疏漏也希望大家能指出
- go语言是由google开发的语言它的其中的一位作者就是C语言或者UNIX之父,它的开发阵容非常强大
- go语言代码简单易读 但是功能非常强大,且执行速度超快 它被称为21世纪的C语言或者面向未来的语言
- 这篇文章适合有一定基础的朋友,当然你要是0基础其实也可以,但是可能显得有些吃力.不过没关系,Golang的信条就是大道至简 这和笔者的信条及其的相似
- 当然有人想说Golang的语法好丑啊, 其实笔者一开始也是这样认为的,丑帅丑帅的.但是到了后面发现Go的语法才是真的耐看
- 接下来我想从简单的例子来带你进入Golang语言,这个时候看不懂也没有关系,会面会有详细教学
HelloWorld
最简单的程序当然就是Hello world!了
当然这个程序并没有什么其实和其他语言也差的不多
不过你可以慢慢看
HelloWorld Web版
这就完成了一个Web服务器
你可以通过浏览器浏访问这个网页 端口为8080
笔者之前是学习java的 到了Web那里你需要下载tomcat 然后进行一些列繁琐的配置,然后才可以使用
而Golang却非常的简单,它的http包是内置的,不需要引入任何的外部的数据
当然你可能觉得这些其他的语言也其实不用太麻烦 但是 Golang的特色并不在此
笔者认为Golang真正出彩是在它并发的处理还有接口
接下来会带你们走进Golang的世界,当然它真的很简单.如果有接触过C语言的人,Golang的关键字比C语言还要少,可能C语言你会被i++ 和 ++i这种操作困扰 但是Golang你完全不需要担心这个的问题
创建Golang世界的角色
首先的第一件事你应该要有一个GO的环境
- 下图是笔者的操作系统环境
- 使用了manjaro + i3 大道至简的Linux操作系统
- go的版本使用的是 1.13 推荐使用 1.8及以上的版本
安装环境
- 首先你可以采用手动安装去官网下载Go的环境
- 当然国内也有镜像文件可以加速下载
- manjaro的用户可以使用 : sudo pacman -S go
- ubuntu的用户可以使用 apt-get
- centos的用户可以使用 yum
- win10的用户还是去网上找下教程吧 搜一下有很多 这里就不在赘述
挑选合手的武器
- vim vim是一款超级好用的文本编辑器,装一些有关Golang的插件也是一个不错的选择,当然前提是你是一个使用vim的老手
- Goland : 这是一个非常好用的编译器熟悉全家桶的朋友应该对这个不陌生.它提供相当智能的代码补全和提示.那么笔者就使用的是这个工具
- 其他的工具这里不再赘述 应该还有很好的比如 vscode…
第一章 问世
go语言希望你把你的代码放在一个地方,这个地方就叫做工作目录.
**在LInux下你可以在终端输入(win10打开cmd) go env GOPATH显示你的工作目录 **
在你的go的工作目录下创建一个src文件夹. 你所有的源代码都应该放在里面.
你就可以在这个里面创建你的工程项目了
笔者这里创建了一个studyDemo的项目
go语言的文件希望你以.go结尾
在goland下创建一个main.go的文件
第一行package声明你这个.go文件属于你这个项目中的哪一个包
你可以这样理解 比如你有两个123.txt, 但是它们俩是不一样的. 你怎么分清谁上谁呢?
给它们有一个命名空间就可以了 比如 这个上 A的123.txt 另外一个上B的123.txt 这样就分清楚了
这里的包的名字可以随意 但是最好和文件夹同名
任何一个项目需要运行都需要一个main的包
像下面这样 main这个函数前面有个箭头表示可以运行
main函数是你程序的唯一入口
如果在demo1这个文件夹下 也有一个main.go但是 包不是main的话也无法运行
import 可以引入其他包裹,
多个包裹应该像下面这样引入
当然你也可以引入你自己的
如果不是Goland 是终端 或者 cmd怎么去运行你的go程序
你可以使用go run 指令
或者你可以使用go build指令将代码编译成可执行程序
当然你也可以使用go install
第二章 初识
变量
你可以使用 var 关键字
var后面跟着变量名 变量类型
大致的变量表 当然你也可以在官网找到更详细的信息
这里有一行报错,它会告诉你没有使用变量a
对的这里不是一个提示或者警告 它是一个报错.
你现在如果想编译代码都是会被拒绝的, Go的作者及其看重代码的优化,如果你定义了一个变量却没有使用,那么这就是错误的
在导入包的时候也会告诉你 没有使用这个包, 你导入了就应该使用它
代码 2-1
package main
import "fmt"
func main() {
var a int
fmt.Printf("a = %d\n",a)
var s string
fmt.Printf("s = %s\n",s)
}
对于上述代码的输出
对于定义的变量int 的初始值是0, string类型是"" (空字符串)
修改代码2-1
代码 2-2
package main
import "fmt"
func main() {
var a int =