文章目录

  • 1. go语言概述
    • 1.1 golang的语言特点
    • 1.2 go语言适合做什么
    • 1.4 go语言学习资料参考
      • 1.4.1 网络资料
      • 1.4.2 推荐书籍
  • 2. go程序是怎么运行起来的?
    • 2.1 GO语言的开发环境
    • 2.2 GOPATH 简单说明
    • 2.3 go语言标准命令概述
    • 2.4 第一个go语言程序

1. go语言概述

Go语言是在2009年11月10日 由Google开源的一门编程语言.号称是"21世纪的C语言"

Go 语言(或称 Golang)是云计算时代的 C 语言。 Go 语言的诞生是为了让程序员有更高的
生产效率, Go 语言专门针对多处理器系统应用程序的编程进行了优化,使用 Go 编译的程
序可以媲美 C 或 C++代码的速度,而且更加安全、支持并行进程。

1.1 golang的语言特点

  • 从C语言中继承了很多设计理念,如表达式语法,结构控制,基础数据类型,传值,指针

  • 开放源代码 ,Go本身是用Go语言编写的

  • 是静态型和编译型

  • 引入 的概念,用于组织程序结构

  • 自动垃圾回收,一般由Go运行时系统负责

  • 天然支持并发

    • 从语言层面就支持并发,使用很简单

    • goroutine,协程,高效利用CPU

    • 基于CSP并发模型

    • 采用管道通信机制,通过管道channel 实现不同goroutine之间的相互通信

  • 函数可以多返回值

  • 新颖的slice 和defer语句引入

  • go编写的程序可以直接编译成机器码,不依赖其他库,以及跨平台编译

  • 内置强大的工具链

  • 丰富的标准库, 特别是网络库很强大

  • 内嵌C代码支持

  • 语法简单,代码风格强制统一

1.2 go语言适合做什么

  1. 区块链应用
  2. 服务器编程,如: 处理日志,文件系统,数据打包,虚拟机处理
  3. 网络编程 ,如API应用,web应用,下载应用
  4. 分布式系统
  5. 云平台/云服务后端开发
  6. 内存数据库

1.4 go语言学习资料参考

1.4.1 网络资料

Go语言中文网

Go语言中文文档

Go语言标准库中文文档

Go语言圣经(中文版)

Go中国技术社区

Golang技术论坛

1.4.2 推荐书籍

《Go程序设计语言》

《Go语言学习笔记》

《Go并发编程实战》

2. go程序是怎么运行起来的?

2.1 GO语言的开发环境

  1. 无论是Windows 环境或者是Linux环境,亦或是Mac 环境都需要下载Go语言的 SDK ,下载地址如下 Go安装包下载地址 ,具体安装细节参看 安装说明

  2. 安装包安环好之后有两个环境变量需要注意(GO语言开发这两个环境变量一定要配置好)

    1. GOROOT : Go语言SDK的安装路径需要配置到系统环境变量中去
    2. GOAPTH : Go语言项目的存放路径,也就是工作目录
  3. 搭建开发环境

  4. window10 系统 搭建步骤(window10 下搭建相对简单)

  5. 从 golang中国 下载window的安装包(注意是32位还是64位系统)

  6. 下载的安装包可以直接安装(记住自己的安装路径,在配置系统环境变量的时候用到,安装路径尽量不要带中文 )

  7. 配置系统环境变量

  8. Ubuntu18

    1. 下载安装包文件

      wget https://dl.google.com/go/go1.12.7.linux-amd64.tar.gz
      
    2. 安装文件文件

      mv go1.12.7.linux-amd64.tar.gz /opt
      sudo tar -zxvf go1.12.7.linux-amd64.tar.gz
      
    3. 配置Golang环境变量

      vim /etc/profile
      

      使用vim打开profile文件,并在文件内容最末端添加如下内容

      export GOROOT=/opt/go
      export PATH=$PATH:$GOROOT/bin
      export GOPATH=$HOME/goproject
      

      重新登录一下再验证golang环境是否安装成功

      go env
      GOARCH="amd64"
      GOBIN=""
      GOCACHE="/home/gong/.cache/go-build"
      GOEXE=""
      GOFLAGS=""
      GOHOSTARCH="amd64"
      GOHOSTOS="linux"
      GOOS="linux"
      GOPATH="/home/gong/goproject"
      GOPROXY=""
      GORACE=""
      GOROOT="/opt/go"
      GOTMPDIR=""
      GOTOOLDIR="/opt/go/pkg/tool/linux_amd64"
      GCCGO="gccgo"
      CC="gcc"
      CXX="g++"
      CGO_ENABLED="1"
      GOMOD=""
      CGO_CFLAGS="-g -O2"
      CGO_CPPFLAGS=""
      CGO_CXXFLAGS="-g -O2"
      CGO_FFLAGS="-g -O2"
      CGO_LDFLAGS="-g -O2"
      PKG_CONFIG="pkg-config"
      GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build199119735=/tmp/go-build -gno-record-gcc-switches"
      

2.2 GOPATH 简单说明

  1. GOPATH设置的工作空间,简单的说工作空间是一个对应特定工程的目录,它通常包含src目录,pkg目录,和bin目录
  2. src目录:用于以代码包的形式组织并保存Go源码文件
  3. pkg目录:用于存放经由go install命令构建安装后的代码包
  4. bin目录:与pkg目录类似,在通过go install命令完成安装后,保存由Go命令源码文件生成的可执行文件。

2.3 go语言标准命令概述

        bug         start a bug reportbuild       compile packages and dependenciesclean       remove object files and cached filesdoc         show documentation for package or symbolenv         print Go environment informationfix         update packages to use new APIsfmt         gofmt (reformat) package sourcesgenerate    generate Go files by processing sourceget         download and install packages and dependenciesinstall     compile and install packages and dependencieslist        list packages or modulesmod         module maintenancerun         compile and run Go programtest        test packagestool        run specified go toolversion     print Go versionvet         report likely mistakes in packages

2.4 第一个go语言程序

  1. GOPATH 指向目录的src目录下新建一个文件,文件名HelloWorld.go ,文件内容如下
package main// 导入fmt包
import "fmt"func main() {fmt.Println("hello world")
}
  1. 代码片段分析

    1. go语言编写的包含代码的文件的后缀是 .go

    2. package main 每个go源代码文件的开头都是package声明的, 指明该文件属于哪个包,go语言的代码是使用包来组织的,包类似于其他编程语言中的库和模块,一个包由一个或者多个.go的源文件组成,放在一个文件夹中,文件夹的名称一般描述了包的作用

    3. import “fmt” 引入一个叫做"fmt"的包,引入该包之后,可以使用fmt包中的函数,例如:fmt.Println()

    4. func main(){

      } func是一个关键字,表示函数 main是函数名,main函数在go语言中有特殊的作用,main函数表示主函数,也就是整个程序的入口函数

    5. 要生成Go可执行程序,必须建立一个名字为main的包,并且在该包中包含一个叫main()的函数(该函数是Go可执行程序的执行起点

    6. go语言中的main()函数, 不能传递参数,也不能定义返回值

    7. go语言程序中的注释有两种

    8. 一种是 /* 块注释 */

    9. 另一种是 // 行注释

  2. 在cli 命令行下执行

$ go run HelloWorld.go
hello world
  1. 通过 go run 命令可以直接运行 .go程序(类似执行一个脚本)
  2. 通过 go build 命令可以对 .go文件进行编译,生成.exe文件

关于Gol语言的概览相关推荐

  1. 第1章 JVM语言家族概览 《Kotin 编程思想·实战》

    第1章 JVM语言家族概览 天地和而万物生,阴阳接而变化起.<荀子·礼记> 1.1 编程语言简述 1.1.1 编程语言是什么 所谓编程语言只是一个抽象的规范,而编译器是这个规范的实现,它是 ...

  2. sqlserver战德臣_数据库系统基础讲义第06讲SQL语言之概览.pdf

    数据库系统基础讲义第06讲SQL语言之概览.pdf 数据库系统之二 --数据库语言-SQL 战德臣 哈尔滨工业大学 教授.博士生导师 黑龙江省教学名师 教育部大学计算机课程教学指导委员会委员 Rese ...

  3. python语言基础-Python语言基础与应用

    spContent=本课基于主讲教师在北京大学讲授数据结构与算法课(Python版)的多年教学实践经验,面向零编程基础的大学生和社会公众,全面讲授Python语言基础,培养学生计算思维的能力,并讲解P ...

  4. C语言标量变向量的函数,GLSL 详解(基础篇)

    上节在绘制三角形的时候,简单讲解了一些着色器,GLSL 的相关概念,可能看的云里雾里的.不要担心,在本节中,我将详细讲解着色语言 GL Shader Language(GLSL)的一些基本的概念. P ...

  5. 05--MySQL自学教程:DDL(Data Definition Language:数据库定义语言)操作数据库(一)

    1.DDL(Data Definition Language:数据库定义语言)概览 DDL(Data Definition Language:数据库定义语言) 2.DDL对数据库的操作 1)方法概览 ...

  6. python 北京大学陈斌教授_【慕课】Python 语言基础与应用(第2次开课)

    慕课<Python语言基础与应用>又开新学期啦! 3月14日第2次开课 编程语言排行榜首,人工智能时代头牌语言 Python 零基础也要学! 本课基于主讲教师在北京大学讲授数据结构与算法课 ...

  7. plc梯形图的c语言写法,PLC梯形图讲解.ppt

    PLC梯形图讲解 第七章 IEC 语言 : 梯形图 概览 梯形图语言的结构与继电器控制回路相似. 电源母线位于LD编辑器的左边.左电源母线对应环路的相线 (L 梯形). 对于 LD 编程, 只有当 L ...

  8. C#语言入门详解1-12

    可供参考的别人的学习笔记:https://blog.csdn.net/Jacey_cai/article/details/122848272 文章目录 一.课程简介.C#语言简介.开发环境准备 二.初 ...

  9. 『Flutter开发实战』十分钟入门Dart语言

    参考:https://dart.cn/samples Dart 编程语言概览 本文向你展示的 Dart 语言用法并不全面-这里只是对那些喜欢通过示例了解语言的人提供一个简单的介绍.你也许会对 Dart ...

最新文章

  1. 【青少年编程】【三级】小鸡吃虫
  2. 分布式存储系统的关键技术
  3. 一篇搞定RSA加密与SHA签名|与Java完全同步
  4. vue中使用axios发送ajax请求
  5. javascript-模板方法模式-提示框归一化插件
  6. eclipse如何调试(Debug)程序(zhuan)
  7. 我们很需要“企业即时通讯”
  8. int** 赋值_一篇文章搞明白Integer、new Integer() 和 int 的概念与区别
  9. vim-录制命令的使用
  10. html怎么直接给服务器发消息,HTML5教程之服务器发送事件
  11. spark生态及各个功能
  12. python获取读取文件的文件名_python文件名获取文件路径
  13. arm 服务器cpu型号,挑战英特尔ARM Tilera发布36核服务器CPU
  14. 【day23】The field file exceeds its maximum permitted size of 1048576 bytes.
  15. 六级单词词汇表(有注音)
  16. sparkGraphX 图操作:pregel(加强的aggregateMessages)
  17. 实时换脸技术——直播,视频通话|脸部交换程序
  18. Excel2Latex 实操步骤(1)
  19. 科目二 倒车入库 流程记录 LTS
  20. win7 IIS7.0 【IIS 管理器无法验证此内置帐户是否有访问权】

热门文章

  1. 【有毒的设计模式】工厂方法模式
  2. 在线考试的兴起,指引了线上考试服务平台发展的新趋势!
  3. mtk camera移植
  4. php100以内质数求和,100以内的质数_PHP质数计算三种方法 php求100以内的质数
  5. 瑞星杀毒软件的安装与设置
  6. 踩到一个R8代码压缩工具的坑
  7. 通过ppk私钥连接服务器中遇到的问题
  8. *** stack smashing detected *** 是什么意思?怎么破
  9. 互联网摸鱼日报(2022-11-29)
  10. 计算机组成原理什么是模运算,【计算机组成原理】运算方法和运算器