首次学习Go语言,分享下学习的经验,请大家不要笑场。
简介:
由于Go语言现在也是比较火的,docker、k8s等都是Go语言写的。很多人将GO语言称为21世纪的C语言,因为GO不仅拥有C的简洁和性能,而且还很好的提供了21世纪互联网环境下服务端开发的各种实用特性,让开发者在语言级别就可以方便的得到自己想要的东西。
GO语言的关键特性:
并发与协程
基于消息传递的通信方式
丰富实用的内置数据类型
函数多返回值
defer机制
反射(reflect)
高性能HTTP Server
工程管理
编程规范
本场 Chat 旨在如何快速构建Go代码。
在本场 Chat 中,会讲到如下内容:
- 使用goland快速新建Go项目
- 工作区与GOPATH
- Go入门篇 Hello World
- Go之命令源码文件 flag
环境准备:
下载goland:
官网下载地址:https://www.jetbrains.com/go/download/other.html
Go的环境:
下载go包安装,设置系统环境变量
linux下:
1. 下载压缩包
wget https://dl.google.com/go/go1.12.14.linux-amd64.tar.gz
2. 提取压缩包
sudo tar -xzf go1.12.14.linux-amd64.tar.gz -C /usr/local
3. 建立软链接
sudo ln -s /usr/local/go/bin/* /usr/bin/
4. 可以运行如下命令,验证是否安装成功:
go version
windows下:类似安装java环境
新建第一个Go程序:
打开goland程序,需要先创建一个项目,选择“New Project”新建一个项目。
接下来选择一个目录作为项目的根目录,并选择合适的Go语言版本,点击“Create”完成创建:
项目创建完成,设置环境配置:
一般情况下,我们应该配置 3 个环境变量,即 GOROOT、GOPATH、GOBIN。
工作区:即放go的源码目录
GOROOT:go的环境变量
GOPATH:可以是一个目录的路径,也可以包含多个目录路径,每个目录都代表 Go 语言的一个工作区(workspace),这些工作区用于放置 Go 语言的源码文件(source file),以及安装(install)后的归档文件(archive file,也就是以“.a”为扩展名的文件)和可执行文件(executable file)。
新建一个hello.go文件:
package main // 声明 main 包
import (
"fmt" // 导入 fmt 包,打印字符串是需要用到
)
func main() { // 声明 main 主函数
fmt.Println("Hello World!") // 打印 Hello World!
}
打开Terminal,输入go run hello.go即可执行
如果需要用go插件运行需要配置下Run Configurations:
设置kind为File,下面的路径是代码的所在路径,然后执行Run 即可。
重点:
如何一个程序中,我们想通过命令的方式传入参数后执行输出结果,那该如何呢?
例如:
package main
import (
//需在此处添加代码【1】
"fmt"
)
var testStr string
func init() {
// 需在此处添加代码【2】
}
func main() {
//需在此处添加代码【3】
fmt.Printf("Hello, %s!\n", testStr)
}
在上面code中,打印这个main的输出前,我们看到有一个参数testStr,这个参数我们可以动态的输入后来给指定的人进行Hello,该如何处理呢?
首先,Go 语言标准库中有一个代码包专门用于接收和解析命令参数。这个代码包的名字叫flag。
所以,如果想要在代码中使用某个包中的程序实体,那么应该先导入这个包。因此,我们需要在[1]处添加代码"flag"。
其次,对象名称肯定是由字符串代表的。所以我们要在[2]处添加调用flag包的StringVar函数的代码。
如:
flag.StringVar(&testStr, "testStr", "Damon", "介绍说明给哪个人问候")
函数flag.StringVar接受 4 个参数。第 1 个参数是用于存该命令参数的值的地址,这里就是在前面声明的变量testStr的地址了,由表达式&testStr表示。
第 2 个参数是为了指定该命令参数的名称,这里是testStr。第 3 个参数是为了指定在未追加该命令参数时的默认值,这里是Damon。
至于第 4 个函数参数,即是该命令参数的简短说明了,这在打印命令说明时会用到。
再说最后一个填空【3】,我们需要在[3]处添加代码flag.Parse()。函数flag.Parse用于真正解析命令参数,并把它们的值赋给相应的变量。
所以最后的完整代码:
package main
import (
"flag"
"fmt"
)
var testStr string
func init(){
flag.StringVar(&testStr, "testStr", "Damon", "介绍说明")
}
func main() {
//用于真正解析参数
flag.Parse()
fmt.Printf("Hello, %s!\n", testStr)
}
对该函数的调用必须在所有命令参数存储载体的声明(这里是对变量name的声明)和设置(这里是在[2]处对flag.StringVar函数的调用)之后,并且在读取任何命令参数值之前进行。正因为如此,我们最好把flag.Parse()放在main函数的函数体的第一行。
然后我们执行这个程序:
go run hello.go -testStr="Jack"
这样打印:
Hello, Jack!
这就是通过命令文件传参的方式来给指定的对象问候了。
另外,如果想查看该命令源码文件的参数说明,可以这样做:
go run hello.go -testStr="Jack" --help
输出内容类似:
Usage of C:\Users\lzl\AppData\Local\Temp\go-build878585158\b001\exe\test_str.exe:
-testStr string
介绍说明 (default "Damon")
exit status 2
这样就可以看到说明了。
以上即今天的分享,命令源码文件指定参数值,来进行传参。
Goland 激活码分享:
链接: https://pan.baidu.com/s/1wYMvihDyRxSRBrT3B9QQkQ
提取码: u6qh
个人网站:http://www.damon8.cn
热文推荐
浅谈微服务-兼容性
Spring Cloud Kubernetes之实战一配置管理
Spring Cloud Kubernetes之实战二服务注册与发现
Spring Cloud Kubernetes之实战三网关Gateway
如有收获,点个在看,谢谢