Go编程基础(介绍和安装)

Go(又称Golang[3])是Google开发的一种静态强类型编译型并发型,并具有垃圾回收功能)的编程语言。来自维基百科

1.什么是Go语言?

img

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

Go语言是Rob Pike以及Ken Thompson于2007年9月开始设计的,Go是基于Inferno操作系统所开发的。[4]Go于2009年11月正式宣布推出,成为开放源代码项目,并在LinuxMac OS X平台上进行了实现,后来追加了Windows系统下的实现。(这个类似土拨鼠的logo是由Rob Pike 的妻子 Renee French 绘制的)

2. Go语言的优点

Go语言的价值:Go在谷歌:以软件工程为目的的语言设计

Go的主要特点有如下几点:

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

3.Go语言的项目架构

Go语言的工作目录如下表,根据约定,GoPath下需要建立3个目录

目录 含义
bin 存放编译后生成的可执行文件
pkg 存放编译后生成的包文件
src 存放项目源码

GOPATH是的你的工作目录,GOROOT是你的安装目录。

程序的整体结构如下图所示:

image.png

4.Go语言的开发环境

本教程采用go1.9以及goland 2018.1的开发环境,首先要学会环境配置(这里就不讲了,比较简单),然后开始Go的开发之旅了!

1.新建一个HelloWord.go文件

在右键新建的时候会两种文件格式:

image.png

Empty file是新建后是一个空文件,然后Simple Application新建后会有main函数的示例代码。

1
2
3
4
5
package main
import "fmt"
func main() {
fmt.Print("hello,world!")
}

Go程序的一般结构:

  • 1、Go程序是通过package来组织的;
  • 2、只有package名称为main的包可以包含main函数,一个可执行程序有且仅有一个main包;
  • 3、通过import关键字来导入其他非main包;
  • 4、通过const关键字进行常量的定义;
  • 5、通过在函数体外部使用var关键字来进行全局变量的声明与赋值;
  • 6、通过type关键字来进行结构(struct)或接口(interface)的声明;
  • 7、通过func关键字来进行函数的声明。

运行结果如下:

image.png

2.基本类型

go语言的基本类型如下:

image.png

image.png

image.png

示例如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package main
import (
"fmt"
"strconv"
)
func main() {
//声明和赋值
var a int = 65
var c int = 75
//简化赋值和显示强制转换
b:= string(a)
//转换为数字
d:= strconv.Itoa(c)
fmt.Println(b)
fmt.Println(d)
}

结果如下:

image.png

因为string()表示将数据转换为文本格式,因此计算机中存储的任何东西本质都是数字,因此此函数自然地认为我们需要的是65表示的文本A。

3.函数

函数的调用如下:参考文件Go指南中文版

1
2
3
4
5
6
7
8
9
10
//func 方法名  形式参数  返回参数类型
func add(x int,y int) int {
return x+y
}
//func add(x ,y int) int {
// return x+y
//}
func main() {
fmt.Print(add(42,13))
}

4.多值返回

1
2
3
4
5
6
7
8
9
10
package main
import "fmt"
func main() {
a,b:=swap("hello","world")
fmt.Print(a,b)
}
func swap(a string, b string) (string,string) {
//这个可能是交换程序了,甚至不需要不需要一个临时变量,但是这个内部是怎么做的呢?
return b,a
}

Q:go语言中swap方法是如何做的呢?

5.变量以及短变量的使用

1
2
3
4
5
6
7
8
9
package main
import "fmt"
var i,j int =1,2
func main() {
var c, python, java = true,false,"no"
//短变量的声明和赋值
k:=3
fmt.Print(i,j,c,python, java,k)
}

6.各种类型的初始值

1
2
3
4
5
6
7
8
9
package main
import "fmt"
func main() {
var i int
var f float64
var b bool
var s string
fmt.Printf("%v %v %v %q\n", i, f, b, s)
}

image.png

7.类型转换(必须显示转换,在Go中不能隐式转换)

1
2
3
4
5
6
7
8
9
10
11
12
13
package main
import (
"math"
"fmt"
)
func main() {
var x, y int = 3, 4
//将xy的值强制类型转换为float64类型
var f float64 = math.Sqrt(float64(x*x+y*y))
//unit无符号整数
var z uint = uint(f)
fmt.Print(x,f,z)
}

5.参考资料

https://go-zh.org/doc/

文章目录
  1. 1. 1.什么是Go语言?
  2. 2. 2. Go语言的优点
  3. 3. 3.Go语言的项目架构
  4. 4. 4.Go语言的开发环境
    1. 4.1. 1.新建一个HelloWord.go文件
    2. 4.2. 2.基本类型
    3. 4.3. 3.函数
    4. 4.4. 4.多值返回
    5. 4.5. 5.变量以及短变量的使用
    6. 4.6. 6.各种类型的初始值
    7. 4.7. 7.类型转换(必须显示转换,在Go中不能隐式转换)
  5. 5. 5.参考资料