Go入门系列:你好,世界

前言

每一门新语言的学习都是从“hello, world”开始的。

开发环境

安装go环境

按照官网的下载及安装文档就很简单集成go开发环境。 Mac和Windows提供了可视化的图形安装方式,还是非常人性化的。 安装成功后,可通过如下命令进行查看,并判断是否安装成功。

go version
复制代码

建议配置国内的镜像服务器:

配置国内镜像代理(使用阿里云镜像)
go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/
验证
go env|grep GOPROXY
复制代码

IDE

首先推荐知名JetBrains针对Go语言推出的GoLang,这对Java开发同学或者Android同学非常友好;

当然如果是前端同学想要学习Go语言开发,那么就首推微软开源的跨语言源码编辑器VS Code了,添加对应的Go插件即可。

(Hello,world)你好,世界

可以直接通过IDE,或者创建普通文件的形式就行学习第一个go程序。建议创建一个用于包含所有练习项目的文件件,方便学习管理。

1. 创建一个demo.go文件,内容如下

package main
import "fmt"
func main() {
	fmt.Println("Hello, world")
	fmt.Println("你好, 世界")
}
复制代码

2. 执行go编译命令

go build demo.go
复制代码

或者在IDE中可以直接点击图中的绿色按钮进行编译

3. 输出结果如下

Hello, world
你好, 世界
复制代码

知识点

1. package main

这一行代码定义了 Go 中的一个包 package。包是 Go 语言的基本组成单元,通常使用单个的小写单词命名,一个 Go 程序本质上就是一组包的集合。 main包在Go中是一个特殊的包,整个Go程序中仅允许存在一个名为 main 的包。 main包中的主要代码就是这个main()函数,这是go可执行程序的入口函数。

func main() {
	fmt.Println("Hello, world")
	fmt.Println("你好, 世界")
}
复制代码

如果不是package main包,那么这个main()函数知识一个普通函数,那么再ide上也没有绿色的小按钮了。

2. Gofmt

Go语言内置了一套Go社区约定俗称的代码风格,并随安装包提供了一个名为Gofmt的工具,这个工具可以帮助你将代码自动格式化为约定的风格。

因此,作为Go开发人员,请在提交你的代码前使用Gofmt格式化你的Go源码。

对于使用Mac的小伙伴可以直接使用快捷键【command+option+l】快速格式化程序代码。

3. 标准 Go 代码风格使用 Tab 而不是空格来实现缩进的

4. 导包及函数调用

  • import “fmt” 一行中“fmt”代表的是包的导入路径(Import),它表示的是标准库下的 fmt 目录,整个 import 声明语句的含义是导入标准库 fmt 目录下的包;
  • fmt.Println 函数调用一行中的“fmt”代表的则是包名。

在 Go 语言中,只有首字母为大写的标识符才是导出的(Exported),才能对包外的代码可见;如果首字母是小写的,那么就说明这个标识符仅限于在声明它的包内可见。

5.所见即所得 Go源码文件本身采用的是Unicode字符集,而且用的是UTF-8标准的字符编码方式;因此不会存在像Python那样存在中文的编码问题,需要在在文件开头加入 # -- coding: UTF-8 -- 或者 # coding=utf-8,比如下面这样

#!/usr/bin/python
# -*- coding: UTF-8 -*-

print( "你好,世界" )
复制代码

6.编码中分号是可选的

编译

使用go build命令编译后生成二进制可执行文件,通过ls命令可以进行查看

go build demo.go

MacBook-Pro-5:awesomeProject demo$ ls
demo    demo.go go.mod
复制代码

demo文件即为可执行文件(Windows系统下为demo.exe,其余系统下为demo)

Go是一种编译型语言,这意味着只有你编译完Go程序之后,才可以将生成的可执行文件交付于其他人,并运行在没有安装Go的环境中。

当然也可以不经过编译,直接运行查看结果,使用 go run 命令,这通常用在开发调试阶段。

MacBook-Pro-5:awesomeProject demo$ go run demo.go
Hello, world
你好, 世界
复制代码

go.mod依赖管理

Go module构建模式是在Go1.11版本正式引入的,为的是彻底解决 Go 项目复杂版本依赖的问题,在 Go1.16版本中,Go module 已经成为了 Go 默认的包依赖管理机制和Go源码构建机制。

Go Module的核心是一个名为 go.mod 的文件,在这个文件中存储了这个 module 对第三方依赖的全部信息,相当于flutter中的pubspec.yaml文件, ReactNative项目中的package.json文件。

go.mod文件的内容示例如下,

module hellomodule

go 1.16

require (
	github.com/valyala/fasthttp v1.38.0
	go.uber.org/zap v1.22.0
)

复制代码

题外话

可以使用 go mod tidy添加所有第三方依赖, 与此同时也会生成一个go.sum文件。

go.sum文件,这个文件记录了 hellomodule 的直接依赖和间接依赖包的相关版本的 hash 值,用来校验本地包的真实性。在构建的时候,如果本地依赖包的 hash 值与 go.sum 文件中记录的不一致,就会被拒绝构建。

总结

  1. Go 包是 Go 语言的基本组成单元。一个 Go 程序就是一组包的集合,所有 Go 代码都位于包中;
  2. Go 源码可以导入其他 Go 包,并使用其中的导出语法元素,包括类型、变量、函数、方法等,而且,main 函数是整个 Go 应用的入口函数;
  3. Go 源码需要先编译,再分发和运行。如果是单 Go 源文件的情况,我们可以直接使用 go build 命令 +Go 源文件名的方式编译。不过,对于复杂的 Go 项目,我们需要在 Go Module 的帮助下完成项目的构建。

参考资料 极客时间《Go语言第一课》

本文由mdnice多平台发布

猜你喜欢

转载自juejin.im/post/7130531568409378824