X Tutup
Skip to content

Latest commit

 

History

History
executable file
·
133 lines (69 loc) · 6.06 KB

File metadata and controls

executable file
·
133 lines (69 loc) · 6.06 KB

Go 语言入门垫脚石

https://www.runoob.com/go/go-tutorial.html

Go语言是什么?

Go出自名门Google公司,是一门支持并发 、垃圾回收的编译型高级编程语言。Go兼具静态编译语言的高性能以及动态语言的高开发效率。 该项目的三位领导者均是著名的语言学家:

Rob Pike:

Go 语言项目总负责人,贝尔实验室 Unix 团队成员,参与的项目包括 Plan9,Inferno 操作系统和 Limbo 编程语言

Ken Thompson:

贝尔实验室 Unix 团队成员,C 语言、Unix 和 Plan 9 的创始人之一,与 Rob Pike 共同开发了 UTF-8 字符集规范,图灵奖获得者

Robert Griesemer:

参与开发 Java HotSpot 虚拟机、 V8 Javascript engine

为什么选 Go**?**

❑ 语言简单、开发效率高 ❑ 高效的垃圾回收机制 ❑ 支持多返回值 ❑ 更丰富的内置类型:map、slice、channel、interface ❑ 语言层面支持并发编程

❑ 编译型语言,编译即测试 ❑ 跨平台编译

![](/Users/apple/Desktop/screenshot/截屏2022-05-05 下午4.16.44.png)

![](/Users/apple/Desktop/screenshot/截屏2022-05-05 下午4.17.19.png)

![](/Users/apple/Desktop/screenshot/截屏2022-05-05 下午4.17.43.png)

基础概念

数据类型和语句

Go 程序的测试

标准库的用法

Hello world

Go 语言的基础组成有以下几个部分:

  • 包声明
  • 引入包
  • 函数
  • 变量
  • 语句 & 表达式
  • 注释
package main

import "fmt"

func main() {
   /* 这是我的第一个简单的程序 */
   fmt.Println("Hello, World!")
}
  1. 第一行代码 package main 定义了包名。你必须在源文件中非注释的第一行指明这个文件属于哪个包,如:package main。package main表示一个可独立执行的程序,每个 Go 应用程序都包含一个名为 main 的包。
  2. 下一行 import "fmt" 告诉 Go 编译器这个程序需要使用 fmt 包(的函数,或其他元素),fmt 包实现了格式化 IO(输入/输出)的函数。
  3. 下一行 func main() 是程序开始执行的函数。main 函数是每一个可执行程序所必须包含的,一般来说都是在启动后第一个执行的函数(如果有 init() 函数则会先执行该函数)。
  4. 下一行 /.../ 是注释,在程序执行时将被忽略。单行注释是最常见的注释形式,你可以在任何地方使用以 // 开头的单行注释。多行注释也叫块注释,均已以 /* 开头,并以 */ 结尾,且不可以嵌套使用,多行注释一般用于包的文档描述或注释成块的代码片段。
  5. 下一行 fmt.Println(...) 可以将字符串输出到控制台,并在最后自动增加换行字符 \n。 使用 fmt.Print("hello, world\n") 可以得到相同的结果。 Print 和 Println 这两个函数也支持使用变量,如:fmt.Println(arr)。如果没有特别指定,它们会以默认的打印格式将变量 arr 输出到控制台。
  6. 当标识符(包括常量、变量、类型、函数名、结构字段等等)以一个大写字母开头,如:Group1,那么使用这种形式的标识符的对象就可以被外部包的代码所使用(客户端程序需要先导入这个包),这被称为导出(像面向对象语言中的 public);标识符如果以小写字母开头,则对包外是不可见的,但是他们在整个包的内部是可见并且可用的(像面向对象语言中的 protected )。

与Java 的区别:

  • 行分隔符:在 Go 程序中,一行代表一个语句结束。每个语句不需要像 C 家族中的其它语言一样以分号 ; 结尾,因为这些工作都将由 Go 编译器自动完成。

![](/Users/apple/Desktop/screenshot/截屏2022-05-05 下午4.26.00.png)

工作区和GOPATH

我们学习 Go 语言时,要做的第一件事,都是根据自己电脑的计算架构(比如,是 32 位的计算机还是 64 位的计算机)以及操作系统(比如,是 Windows 还是 Linux),从Go 语言官网下载对应的二进制包,也就是可以拿来即用的安装包。

随后,我们会解压缩安装包、放置到某个目录、配置环境变量,并通过在命令行中输入go version来验证是否安装成功。

在这个过程中,我们还需要配置 3 个环境变量,也就是 GOROOT、GOPATH 和 GOBIN。这里我可以简单介绍一下。

  • GOROOT:Go 语言安装根目录的路径,也就是 GO 语言的安装路径。
  • GOPATH:若干工作区目录的路径。是我们自己定义的工作空间。
  • GOBIN:GO 程序生成的可执行文件(executable file)的路径。

其中,GOPATH 背后的概念是最多的,也是最重要的。那么,今天我们的面试问题是:你知道设置 GOPATH 有什么意义吗?

关于这个问题,它的典型回答是这样的:

你可以把 GOPATH 简单理解成 Go 语言的工作目录,它的值是一个目录的路径,也可以是多个目录路径,每个目录都代表 Go 语言的一个工作区(workspace)。

我们需要利于这些工作区,去放置 Go 语言的源码文件(source file),以及安装(install)后的归档文件(archive file,也就是以“.a”为扩展名的文件)和可执行文件(executable file)。

事实上,由于 Go 语言项目在其生命周期内的所有操作(编码、依赖管理、构建、测试、安装等)基本上都是围绕着 GOPATH 和工作区进行的。所以,它的背后至少有 3 个知识点,分别是:

1. Go 语言源码的组织方式是怎样的;

2. 你是否了解源码安装后的结果(只有在安装后,Go 语言源码才能被我们或其他代码使用);

3. 你是否理解构建和安装 Go 程序的过程(这在开发程序以及查找程序问题的时候都很有用,否则你很可能会走弯路)。

命令源码文件

源码文件又分为三种,即:命令源码文件、库源码文件和测试源码文件,它们都有着不同的用途和编写规则。

X Tutup