Go语言入门基础之命令源码文件

首次学习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

 

热文推荐

Springcloud Oauth2 基础篇

Springcloud Oauth2 进阶篇

Springcloud Oauth2 HA篇

浅谈微服务-兼容性
Spring Cloud Kubernetes之实战一配置管理

Spring Cloud Kubernetes之实战二服务注册与发现

Spring Cloud Kubernetes之实战三网关Gateway

微服务自动化部署CI/CD

Ubuntu下K8S部署指南,单机、集群,带你入坑

What is Edge Computing

如有收获,点个在看,谢谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值