1.什么是go

go语言是一门并发支持、垃圾回收的编译型系统编程语言旨在创造一门具有在静态编译语言的高性能和动态语言的高效开发之间拥有良好平衡点的一门编程语言。

2.go的主要特点

  • 类型安全和内存安全
  • 以非常直观和极低代价的方案实现高并发
  • 高效的垃圾回收机制
  • 快速编译(同时解决C语言中头文件太多的问题)
  • 为多核计算机提供性能提升的方案
  • UTF-8编码支持

3.Ubuntu下go环境搭建

3.1 下载并解压符合操作系统的二进制源码包


在这里选择合适的包并下载:https://golang.org/dl/

wget https://dl.google.com/go/go1.14.3.linux-amd64.tar.gz
sudo tar -C /usr/local/ -zxvf go1.14.3.linux-amd64.tar.gz

3.2 设置环境变量

vim ~/.bashra

添加以下文件:

export GOROOT=/usr/local/go
export GOPATH=/home/ljr/go
export PATH=$PATH:/usr/local/go/bin
  • GOROOT:表示go在电脑上的安装位置,如我的go安装位置在/usr/local/go,我在配置文件中对应配置GOROOT=/usr/local/go
  • GOPATH:一个保存工作目录的环境变量,可以设置多个工作目录。
  • PATH:保证配置可以在任何地方调用需要在PATH环境变量上添加go的路径。

设置完成后,重启Ubuntu生效,或使用此命令立即生效:

source ~/.bashrc

此时可输入以下命令来检查go的环境变量:

go env
env

在终端输入go可以查看帮助:

4.go 语言 HelloWorld

按照go开发规范,GOPATH目录下的每个工作一般分为三个子目录:src,pkg,bin。

  • src——里面每一个子目录,就是一个包,包内是Go的源码文件;
  • pkg——编译后生成的,包的目标文件;
  • bin——生成的可执行文件。

4.1编写第一个程序

在src目录下创建一个文件夹叫hello,在该目录下创建一个文件叫hello.go,用vim输入以下内容:

package main
import "fmt"
func main() {println("Hello", "world")
}

程序解读:

4.1.1 package

  • 在同一个包下面的文件属于同一个工程文件,不用import包,可以直接使用;
  • 在同一个包下面的所有文件的package名,都是一样的;
  • 在同一个包下面的文件package名都建议设为是该目录名,但也可以不是。

4.1.2 import

import “fmt” 告诉 go 编译器这个程序需要使用 fmt 包的函数,fmt 包实现了格式化 IO(输入/输出)的函数,可以是相对路径也可以是绝对路径,推荐使用绝对路径(起始于工程根目录)。

  • 点操作:我们有时候会看到如下的方式导入包
import(. "fmt"
)

这个点操作的含义就是这个包导入之后在你调用这个包的函数时,你可以省略前缀的包名,也就是前面你调用的fmt.Println("hello world")可以省略的写成Println("hello world")

  • 别名操作:别名操作顾名思义我们可以把包命名成另一个我们用起来容易记忆的名字
import(f "fmt"
)

别名操作的话调用包函数时前缀变成了我们的前缀,即f.Println("hello world")

  • _操作:请看下面这个import
import ("database/sql"_ "xxx"
)

_操作其实是引入该包,而不直接使用包里面的函数,而是调用了该包里面的init函数

4.1.3 main

main()是程序运行的入口。

4.1.4 Go中的保留字

这些保留字不能用作常量或变量或任何其他标识符名称。

4.2 执行go程序

方式一:使用go run命令


可以看到go编译中检查到程序中没有用到“fmt”包,验证了go语言快速编译的特点,我们改下程序,去掉import “fmt”,然后运行:

可以看到得出了预期的结果。

方式二:使用go build命令

打开终端:在任意文件路径下,运行:

​ go install hello

​或进入项目(应用包)的路径,然后运行:

go install

在编译生成go程序时,go实际上会去两个地方找程序包:GOROOT下的src文件夹下和GOPATH下的src文件夹下。在程序包里,自动找main包的main函数作为程序入口,然后进行编译。​在/home/ljr/go/bin/下(如果之前没有bin目录则会自动创建),会发现出现了一个hello的可执行文件,运行结果如下:

go语言学习(一)——go语言简介和环境搭建相关推荐

  1. C语言学习第一天~Eclipse MinGW环境搭建

    一.环境准备 windows 二.Windows环境下gcc编译器 1.MinGW介绍 MinGW是指只用自由软件来生成纯粹的Win32可执行文件的编译环境,它是Minimalist GNU on W ...

  2. Python语言学习:Python语言学习之硬件交互应用(arduino、树莓派等)相关的简介、案例应用之详细攻略

    Python语言学习:Python语言学习之硬件交互应用(arduino.树莓派等)相关的简介.案例应用之详细攻略 目录 Python与硬件交互应用 1.适合运行python的嵌入式硬件系统 1.1. ...

  3. Python语言学习:python语言的特点、入门、基础用法之详细攻略

    Python语言学习:python语言的特点.入门.基础用法之详细攻略 相关内容 Python 基础教程 目录 python语言的特点 python语言的入门 python语言的基础用法 python ...

  4. Python语言学习:python语言代码调试—异常处理之详细攻略

    Python语言学习:python语言代码调试-异常处理之详细攻略 目录 python语言代码调试-异常处理 异常捕捉可以使用 try/except 语句 相关文章 Python3 错误和异常 | 菜 ...

  5. python语言学习:python语言学习中的定义类、定义函数、封装api等详细攻略

    python语言学习:python语言学习中的定义类.定义函数.封装api等详细攻略 目录 python语言学习中的定义类 python语言学习中的定义函数 python语言学习中封装api pyth ...

  6. C语言学习笔记---001C语言的介绍,编译过程原理,工具等

    C语言学习笔记---001C语言的介绍,编译过程原理,工具等 创梦技术交流平台:资源下载,技术交流,网络赚钱: 交流qq群:1群:248318056 2群:251572072 技术交流平台:cre.i ...

  7. Python语言学习:Python语言学习之正则表达式常用函数之re.search方法【输出仅一个匹配结果(内容+位置)】、re.findall方法【输出所有匹配结果(内容)】案例集合之详细攻略

    Python语言学习:Python语言学习之正则表达式常用函数之re.search方法[输出仅一个匹配结果(内容+位置)].re.findall方法[输出所有匹配结果(内容)]案例集合之详细攻略 导读 ...

  8. Go语言从入门到规范-1.1、Go语言官网文档大纲及环境搭建

    Go语言从入门到规范-1.1.Go语言官网文档大纲及环境搭建 文章目录 Go语言从入门到规范-1.1.Go语言官网文档大纲及环境搭建 前言 一.go简介及学习路径 二.安装go 1.下载Go发行版 2 ...

  9. TensorFlow2.0(一)--简介与环境搭建

    简介与环境搭建 1. TensorFlow是什么 2. TensorFlow1.0与2.0架构 3. TensorFlow环境配置 1. TensorFlow是什么 TensorFlow是Google ...

  10. xcode w情ndows版,第 1 章 简介和环境搭建

    第 1 章 简介和环境搭建 1.1 什么是编程语言 如果想控制计算机,你需要一种可以和计算机对话的方法.不像猫或狗那样有一套自己的神秘语言,计算机的语言是人类创造的.计算机程序是一段文本,就像一本书或 ...

最新文章

  1. Java Optional 的 orElse() 和 orElseGet() 的区别
  2. 包无法安装_R语言基础教程——第2章:R下载安装和环境搭建
  3. vs2015无法打开包括文件:“winapifamily.h”
  4. 点击home键_iPhone小技巧:无Home键iPhone11如何强制重启?
  5. 【转】图片轮播效果2
  6. Swift - 05 - 数值型字面量
  7. JavaScript数据结构-列表
  8. 【302】C# TreeView 控件使用说明
  9. IT营Koa2教程_Koa2+Nodejs+MongoDb打造企业级CMS前后端全栈项目实战视频教程(大地)
  10. kewail node 短信_node.js短信接口_node.js发短信_node.js短信验证码_验证码短信代码示例_互亿无线...
  11. MATLAB读取MIT心电信号
  12. NetFlix 服务注册与发现 Eureka
  13. gerrit/git操作中遇到的问题
  14. 宏病毒的研究与实例分析04——实战分析
  15. office2007word不能插入页码解决办法
  16. 计算机二级您是系统管理用户,全国计算机等级考试(NCRE)考务管理系统考生网报手册...
  17. Kotlin第二章:kotlin基础
  18. vs2017c语言一闪而逝6,Visual Studio IDE编写程序时不显示窗口或窗口一闪而逝的解决方法...
  19. 文献 | 你的狗狗是否也很擅长“察言观色”?
  20. SONY EVI-D70P

热门文章

  1. Mybatis 缓存系统源码解析
  2. APDU命令的结构和处理【转】
  3. Web中的XHRHttpRequest
  4. 从库中图片逐帧插入到场景
  5. MySQL 触发器错误
  6. 乔布斯留给后人最宝贵的十条经验!
  7. MSN8.0?!O My God,it's so perfect!
  8. HTML5 特性检测:Canvas(画布)
  9. java ssh框架 struts spring hibernate 简介
  10. python3 ssl.CertificateError: hostname manifest.googlevideo.com doesn t match either