在上一章的学习中,我们知道了go语言开发环境的搭建过程,这一章作为一个入门的指南手册,对go语言有一个比较清楚的了解

通过本章学习,可以知道如下知识点:

  • 会编写第一个go程序
  • 知道go语言的基本语法
  • 知道go程序的执行过程

1、什么是go语言?

Go 语言又称 Golang,由 Google 公司于 2009 年发布的,和 Java 类似,它是一门静态的、强类型的、编译型的编程语言, Go 语言支持 Windows、Linux 等多个平台,也可以直接在 Android 和 iOS 等移动端执行,也能够支持并发,所以Go 语言在云计算、微服务、大数据、区块链、物联网、人工智能等领域都有广泛的应用

静态语言和动态语言区别:

  • 动态语言(弱类型语言)是运行时才确定数据类型的语言,比如Php、Asp、JavaScript、Python、Perl等等
  • 静态语言(强类型语言)是编译时变量的数据类型就可以确定的语言,比如Java、C、C++、C#、Go等。

编译型语言和解释型语言区别:

  • 编译型编程语言:使用专门的编译器,将高级编程语言一次性编译成可以被平台执行的机器码,并包装成平台所能识别的可执行程序,比如C、C++、Golang
  • 解释型编程语言:没有构建步骤,而是使用专门的解释器对源程序逐行解释成特定平台的机器码。解释型语言曾经被认为比编译型语言慢得多。但是,随着即时 (JIT) 编译的发展,性能差距正在缩小,比如JavaScript、Python等等

2、go语言的背景

go语言是Google公司推出的一门编程语言,其核心成员是3位大牛:

然后,为什么要开发出golang语言?

  • 随着软件规模的不断扩大,开发者在开发过程遇到很多问题,c/c++程序虽然运行很快,但是编译是比较慢的,如果是一个大型项目是需要不少时间在编译上的,同时存在一系列的内存泄漏需要处理。
  • 一个是软件系统的复杂程度越来越高,开发和维护成本越来越高,所以急需一个足够简洁的编程语言提高效率
  • 计算机硬件发展很快,性能提高很快。但是主流的编程语言发展明显落后于硬件,不能很好利用多核多cpu的优势提升软件系统性能。

3、Go语言特点

Go语言既有静态语言的安全和性能,又达到了动态语言开发维护的高效率,go语言既有C静态语言程序的运行速度,又能达到python动态语言的快速开发。下面总结一些go语言的特性:

  1. 从C语言继承了很多理念,包括表达式语法、控制结构、基础数据类型、调用参数传值、指针等等,也保留了和c语言一样的编译运行方式
func t(num *int) {*num=20
}
  1. 有包的概念,用于组织程序结构,go语言的一个文件都要归属于对应的package,不能单独存在,而且必须要有一个main命名的package
  2. 有垃圾回收机制,内存自动回收,不需要开发人员管理
  3. 支持并发,基于CPS并发模型(Communicating Sequential Processes)实现,有轻量级线程goroutine,可支持大并发处理,高效利用多核
  4. 有管道通信机制,通过go语言的channel,可以实现不同goroute之间的通信
  5. 函数可以返回多个值,而且必须有一个main函数
func getCount(n1 int,n2 int){sum := n1 + n2;sub := n1 - n2;return sum,sub;
}
  1. 新的特性,slice切片、延时执行等
  2. 语法很规范,比如一行代码就写一行,不能和java一样,多行代码逻辑写成一行,函数的第一个左括号必须和func同一行等等
  3. public的函数名要大写,就可以在其它go文件里调用了

4、go语言执行流程

go的执行有两种方法,一种是先编译然后运行可执行文件,另外一种是一步到位,直接执行go run执行程序

这种方法,要先执行go build sample.go执行对应的go文件,编译为可执行文件,在window是exe文件,然后执行可执行文件

在编辑器,一般是这种方法,直接点执行都是直接一步到位

两种执行流程的区别

  • 如果我们先编译为可执行文件,我们可以将可执行文件复制到没有go环境的系统也是可以执行的,因为编译过程会将一些库都会包含到可执行文件里
  • 执行go run一步到位的,我们如果要在其它平台运行是需要有go环境,否则无法执行

5、go语言转义字符

常用的转义字符:

  • \t:制表符,通常用于排版
  • \n:换行符
  • \\:一个\
  • \":一个"
  • \r:一个回车
fmt.PrintLn("hello\tworld")

6、go语言代码注释

golang的代码注释其实和java语言也是一样的,也是有行注释和块注释

  • 行注释
    语法:// 注释内容
  • 块注释
    语法
/*
注释内容
*/

注意:

  • 注释的行注释和块注释,注释的内容是不会被go编辑器执行的
  • 块注释里不允许有块注释的嵌套使用

7、学会看Golang相关文档

官方网站:https://go.dev/


https://tour.go-zh.org/welcome/1

Golang标准库中文文档:https://studygolang.com/pkgdoc

8、第一个go程序

下面编写一个hello world程序,对整个执行流程和注意事项有所了解

开发环境

  • Go 1.15.8
  • GoLand 2021

新建一个go项目,命名为sample,选择对应的go sdk版本

新建go file,写个hello world程序

package mainimport "fmt"func main()  {fmt.Printf("hello")
}

go语言和c语言一样,都是编译型语言,所以go程序的运行也是需要先编译,go程序在window系统是编译为一个文件命名的exe二进制可执行文件

模拟一下这个构建和执行过程,go build sample.go,这个执行之后会有一个exe文件生成,然后sample.exe直接执行,linux环境是./sample

当然,既然有IDE,直接点击绿色三角头执行就行

程序解读:go必须也有类似于java的package模式,这里必须要有一个main命名的package,也要有main命名的函数,函数统一用func关键字,然后在main函数里调用fmt的api打印字符串

注意点,go语言是不需要加上分号的,这点和java、PHP就不一样,还有func的第一个左括号必须和func同一行,不然不能编译,读者可以试试换行,当然IDE里会提示

Golang系列之快速入门教程相关推荐

  1. BIML 101 - ETL数据清洗 系列 - BIML 快速入门教程 - 序

    BIML 101 - BIML 快速入门教程 做大数据的项目,最花时间的就是数据清洗. 没有一个相对可靠的数据,数据分析就是无木之舟,无水之源. 如果你已经进了ETL这个坑,而且预算有限,并且有大量的 ...

  2. golang 模板引擎 html,Golang模板引擎快速入门教程

    Go语言内置了 text/template 和 html/template两个模板库,专门用于处理网页html模板. html/template 是在 text/template 模板库的基础上增加了 ...

  3. BeagleBone Black快速入门教程第1章嵌入式Linux之于Maker们

    BeagleBone Black快速入门教程第1章嵌入式Linux之于Maker们 Maker的中文含义类似"创客".创客是指一群酷爱科技.热衷实践的人群,他们以分享技术.交流思想 ...

  4. sklearn快速入门教程:(五)集成学习

    sklearn快速入门教程–(五)集成学习 一.集成学习简述 集成学习是目前各类竞赛和工程中应用最广泛的模型提升方法.比如在kaggle中就有关于集成学习的介绍(Kaggle模型融合原文).这里所谓的 ...

  5. sklearn快速入门教程:(一)准备工作

    sklearn快速入门教程 – 准备工作 1. 前言 sklearn全称 scikit-learn,它是一个集成了目前市面上最常用的机器学习模型的库,使用起来非常轻松简单,因此获得了广泛的应用. 从官 ...

  6. .NET Core快速入门教程 5、使用VS Code进行C#代码调试的技巧

    .NET Core 快速入门教程 .NET Core 快速学习.入门系列教程.这个入门系列教程主要跟大家聊聊.NET Core的前世今生,以及Windows.Linux(CentOS.Ubuntu)基 ...

  7. pkpm快速入门教程_PKPM快速入门教程.ppt

    PKPM快速入门教程.ppt PKPM快速入门 PMCAD的基本功能 一.人机交互建立全楼结构模型 二.自动倒算荷载建立恒活载库 三.为各种计算模型提供所需数据文件 四.为上部各绘图CAD模块提供结构 ...

  8. 高性价比WIFI图传方案快速入门教程

    ESP32-CAM ArduinoIDE开发系列文章目录 第一篇:ESP32-CAM高性价比WIFI图传方案快速入门教程 文章目录 ESP32-CAM ArduinoIDE开发系列文章目录 前言 一. ...

  9. Turtlebot4快速入门教程-A1激光雷达检测

     系列文章目录: Turtlebot4快速入门教程-目录 TurtleBot4快速入门教程-硬件介绍 Turtlebot4快速入门教程-软件综述 TurtleBot4快速入门教程-远程PC安装 Tur ...

最新文章

  1. 计算一下你的“手指率”
  2. 64 岁的 Python 之父:我不退休了,我要去微软!
  3. Dw序号列表如何通过html语言加,html标签属性大全
  4. mysql insert 语句优化_分享insert into语句优化的小技巧
  5. [Java基础]模块化概述
  6. Web3d明日之星基于Javascript和OpenGL的技术
  7. pip工具使用总结以及常用库PIL、freetype的安装
  8. 软件工程--瀑布模型
  9. java error:编码gbk的不可映射字符
  10. 解决RecyclerView瀑布流效果结合Glide使用时图片变形的问题
  11. 巨头林立的音频赛道,喜马拉雅如何讲好资本故事?
  12. FTP文件传输神器:8uftp
  13. 【PMAC】Chapter2:Pewin Pro32出现EAccessViolation
  14. 派对屋3000效果器怎样调试_卡拉OK前级效果器如何调试?
  15. TI Sitara系列AM4376/AM4379 ARM Cortex-A9高性能低功耗处理器设计的工业级核心板
  16. 做了五年Android,我顿悟了...
  17. TCP/IP高频考点之一个数据包的流浪日记
  18. 简历信息提取二:PaddleNLP完成简历信息抽取
  19. k8s==安装仪表盘,用仪表盘部署nginx
  20. 技术分享-车辆监控模拟-追踪定位

热门文章

  1. 基于php+mysql的医保管理系统
  2. AppHangB1引起的explorer进程停止与Windows交互解决方法
  3. 孙鑫MFC笔记(15)--多线程和聊天室的创建
  4. 在西湖泛舟,差点被坑
  5. 谷歌停止合作,英特尔高通博通等已断供
  6. 使用TinyProxy搭建代理
  7. MicroPython-On-ESP8266——数码管的使用,四位数码管及动态扫描显示
  8. iscsitarget
  9. vue + echarts(5.2.1)仿3d地图
  10. 重置服务器硬件管理口 IMM IPMI BMC 密码