Go语言简介

Golang

什么是Go?

Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态强类型编译型语言。Go 语言语法与 C 相近,但功能上有:内存安全,GC(垃圾回收),结构形态及 CSP-style 并发计算

 

三个方向

  • 区块链研发工程师
  • Go服务器端/游戏软件工程师
  • Golang分布式/云计算软件工程师

 

Golang的概述

Go语言保证了既能到达静态编译语言的安全和性能,又达到了动态语言开发维护的高效率,使用一个表达式来形容Go语言:Go=C+Python,说明Go语言既有C静态语言程序的运行速度,又能达到Python动态语言的快速开发。

从C语言中继承了很多理念,包括表达式语法,控制结构,基础数据类型,调用参数传值,指针等等,也保留了和C语言一样的编译执行方式及弱化的指针

引入包的概念,用于组织程序结构,Go语言的一个文件都要归属于一个包,而不能单独存在。

垃圾回收机制,内存自动回收,不需开发人员管理

天然并发(重要特点)

  1. 从语言层面支持并发,实现简单
  2. goroutine,轻量级线程,可实现大并发处理,高效利用多核。
  3. 基于CPS并发模型(CommunicatingSequentialProcesses)实现

吸收了管道通信机制,形成Go语言特有的管道channel通过管道channel,可以实现不同的goroute之间的相互通信

函数可以返回多个值.

新的创新:比如切片slice、延时执行defer

 

Golang 的开发工具的介绍

注意:需要安装go的sdk开发工具

 

Go 语言最主要的特性

  • 自动垃圾回收
  • 更丰富的内置类型
  • 函数多返回值
  • 错误处理
  • 匿名函数和闭包
  • 类型和接口
  • 并发编程
  • 反射
  • 语言交互性

 

第一个 Go 程序

"开发一个Hello.go的程序,可以输出Hello World"

package main    "一个Go文件需要在一个包"

"导入包"

import "fmt"

"主函数,程序的入口"
func main() {
    fmt.Println("Hello, World!")
}

 

Golang 执行流程

如果是对源码编译后,再执行,Go的执行流程如下图

如果我们是对源码直接执行gorun源码,Go的执行流程如下图

 

两者区别

  • 如果我们先编译生成了可执行文件,那么我们可以将该可执行文件拷贝到没有go开发环境的机器上,仍然可以运行
  • 如果我们是直接gorungo源代码,那么如果要在另外一个机器上这么运行,也需要go开发环境,否则无法执行。
  • 在编译时,编译器会将程序运行依赖的库文件包含在可执行文件中,所以,可执行文件变大了很多。

 

Go 程序开发的注意事项

  1. Go源文件以"go"为扩展名。

  2. Go应用程序的执行入口是main()函数。这个是和其它编程语言(比如java/c)

  3. Go语言严格区分大小写。

  4. Go方法由一条条语句构成,每个语句后不需要分号 (Go语言会在每行后自动加分号)

  5. Go编译器是一行行进行编译的,因此我们一行就写一条语句,不能把多条语句写在同一个,否则报错

  6. Go语言定义的变量或者import的包如果没有使用到,代码不能编译通过。

  7. 大括号都是成对出现的,缺一不可。
package main
import "fmt"
func main() {
    fmt.Println("Hello, World!")
    "定义一个变量 如果你没有使用这个变量 就不会编译通过"
    var num = 10
}

 

Go 语言转义字符

常用的转义字符有如下

  1. \t:表示一个制表符,通常使用它可以排版。

  2. \n: 换行符

  3. \": 一个“

  4. \r: 一个回车,重头还是,不换行

package main 
import "fmt" //fmt包中提供格式化 输出输入函数
func main(){
    //演示转义字符的使用
    fmt.Println("姓名\t年龄\t籍贯\t住址\njohn\t12\t河北\t北京")
}

 

关键字

下面列举了 Go 代码中会使用到的 25 个关键字或保留字:

break default func interface select
case defer go map struct
chan else goto package switch
const fallthrough if range type
continue for import return var

除了以上介绍的这些关键字,Go 语言还有 36 个预定义标识符:

append bool byte cap close complex complex64 complex128 uint16
copy false float32 float64 imag int int8 int16 uint32
int32 int64 iota len make new nil panic uint64
print println real recover string true uint uint8 uintptr

 

注释

// 单行注释

/*
Author by me
我是多行注释
*/

 

Go 语言的空格

Go 语言中变量的声明必须使用空格隔开,如:

var age int;

语句中适当使用空格能让程序更易阅读。

无空格:

fruit=apples+oranges;

在变量与运算符间加入空格,程序看起来更加美观,如:

fruit = apples + oranges;

 

// 开发一个hello.go程序,可以输出"hello,world”
package main

// 导入包
import "fmt"

// 主函数,程序的入口
func main() {
	fmt.Println("hello, world")
}
posted @ 2021-07-30 16:41  isicman  阅读(237)  评论(0)    收藏  举报