Go语言核心编程(临时发布版)

栏目: Go · 发布时间: 7年前

内容简介:1、Go简介及应用场景Go语言,我们可以简单的写成Golang,是Google公司创造和主推的。Go可以做什么?区块链开发、Go服务端开发、Golang分布式/云计算

Go语言核心编程

原创者:文思

一、认识 Go 语言

1、Go简介及应用场景

Go语言,我们可以简单的写成Golang,是Google公司创造和主推的。

Go可以做什么?区块链开发、Go服务端开发、Golang分布式/云计算

Go的优势:处理大并发、处理数据、计算能力

Go目前的应用领域:区块链应用、后端服务应用支撑(排序、推荐、搜索、按条件分流等)、云计算/云服务(盛大云计算:CND调度|分发系统|监控系统|短域名服务、京东消息推送云服务及京东分布式文件系统后端全部用go实现)

2、Golang的学习方法

高效;先建立整体框架,然后细节;先know how再know why;多琢磨别人怎么做;总结 学习经验;后期注重技术基础及细节原理的认识

Go语言的吉祥物,金花鼠

Go语言核心编程(临时发布版)

3、Go语言小故事

Go语言核心编程(临时发布版)

为何要创造Go语言?

Go语言核心编程(临时发布版)

发展历程:

2007年原型

2009年开源发布

2015年1.5版本中移除了最后的残余的C代码

2017年2月17日1.8版本

2017年8月24日1.9版本,1.9.2版本

2018年2月16日1.10版本

4、Go语言特点:

(1)  Go=C+Python,兼顾运行速度与动态语言的快速开发。继承了C的理念,保留了C的编译执行方式,但弱化了指针。

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

(3) 垃圾回收机制。内存自动回收,不需要开发人员管理

(4)  天然并发(重要特点):从语言层面支持并发,实现简单;goroutine轻量级线程,可实现大并处理,高效利用多核;基于CPS并发模型实现。

(5)  吸收了管道通信机制,形成了Go语言特有的管道Channel,通过管道可以实现不同goroute之间的通信。

(6) 函数可以返回多个值,且go语句后面不需要写分号(编译器会自动加分号)

(7) 新的创新:比如切片slice、延时执行defer等。

5、Go语言的开发工具

1、visual  studio code (VSCode)运行于主流操作系统智商,默认提供Go语言语法高亮,安装Go语言插件后可以智能提示、编译运行。

2、Sublime Text可免费试用默认也支持Go语法,但一定次数后提示是否购买。

3、Vim 是从vi发展出来的,代码补全、编译、错误跳转等方便编程的功能丰富。

4、Emacs 传说中的神器,不仅是一个编辑器,可称为一个集成运行环境。

5、Eclipse

6、LiteIDE 中国人开发专门Go语言开发

7、JetBrains公司的产品,付费,需要安装Go语言

建议学习时使用VSCode或vim。一定阶段后工作使用时用Eclipsse等自动化较强的开发工具。

二、开发实战

创建一个文件夹gocode,类似 java 的workspace

package main//归属到main包下

import "fmt"//引入fmt包

func main(){

fmt.Println("hello")//输出hello

}

1、安装开发环境、sdk

https://www.golangtc.com/download 下载sdk然后解压即可:

Go语言核心编程(临时发布版)

配置环境变量:

GOROOT 指定sdk的安装路径

Path 添加sdk的/bin目录

GOPATH 工作目录,以后go项目存放的路径

例如:

Go语言核心编程(临时发布版)

2、快速入门

go程序的目录结构

d:/goproject

|--src

|--go code

|--project1(项目)

开始hello,world

Go语言核心编程(临时发布版)

通过go build命令进行编译源文件:go build  heelo.go

Go语言核心编程(临时发布版)

运行hello.exe文件即可:hello.ext

Go语言核心编程(临时发布版)

也可以用go  run编译后直接执行,go run hello.go:

Go语言核心编程(临时发布版)

大家注意,go和java在编译时不同的一点是,go可以指定编译后的文件名称。比如:

Go语言核心编程(临时发布版)

执行流程:

先编译再执行:类似java,编译后的exe相当于java的class

使用go  run直接编译执行:底层也是先编译再执行。

先编译再执行的好处就是可以把exe拷贝到没有go的安装环境下执行

编译后的exe文件会将依赖的库也编译进来,所以exe会比go文件大很多。

注意事项:     

Go应用程序的执行入口是main函数(和java一样)。

Go语言严格区分大小写。

Go方法由一条一条语句构成,语句后不需要加分号。

Go语言一条一条编译,不能把多条语句写在统一行。

Go语言定义的变量或者import引入的包引入后没有被使用,代码不能编译通过(和java不同)。

大括号成对出现,缺一不可。

3、转义字符及注释、规范的编码风格

\t   制表位

\n   换行符

\\   一个\

\”   一个”

\r   一个回车

1)行注释://

2)块注释:/**/

编码风格:官方推荐用行注释来注释方法和语句。

正确的缩进和空白,可以使用键盘进行缩进,也能使用gofmt命令来进行格式化(gofmt –w main.go该指令将格式化后的内容重新写入到文件)。

运算符两边习惯性各加一个空格。比如:2 + 3

一行尽量不要超过80个字符,如果超长建议使用换行符

左侧大括号要写在函数同一行,比如:

func main{

}

4、官方编程指南和标准库API

https://golang.org/#

点击tour选择中文,可以看中文版

Golang的中文网站 https://studygolang.com/

Go语言核心编程(临时发布版)

对应api一般都可以在源码下找到

Go语言核心编程(临时发布版)

5、变量

Golang的变量是有数据类型的。

1定义变量  2声明变量  3使用变量

var i int

i = 10

变量使用的三种方式:

1指定变量类型,声明后若不赋值,使用默认值

2根据值自行判断变量类型

3省略var,变量名 := 变量值

使用变量及一次性声明多个变量,示例:

packagemain

import "fmt"

func main(){

var i int

fmt.Println(i)

var t = 100

fmt.Println(t)

a := 1000

fmt.Println(a)

//以下是一次性声明多个变量的三种方式

var n1,n2,n3 int

fmt.Println(n1,",",n2,",",n3)

var m1,m2,m3 = 10000,"tom",20000

fmt.Println(m1,",",m2,",",m3)

a1,a2,a3 := 100000,"jack",300000

fmt.Println(a1,",",a2,",",a3)

}

运行输出:

0

100

1000

0, 0 , 0

10000, tom , 20000

100000, jack , 300000

全局变量:在函数外部定义的变量就是全局变量。也可以分开创建声明和使用,也可以一次性声明,示例:

import "fmt"

var n1 = 1

var n2 = 2

var n3 = 3

//以下是一次性声明多个全局变量

var(

m1 = 11

m2 = 22

m3 = 33

)

func main(){

fmt.Println(n1,",",n2,",",n3)

fmt.Println(m1,",",m2,",",m3)

}

运行输出:

1, 2 , 3

11, 22 , 33

局部变量有默认的值,全局变量没有默认值。(这点和java相反)

Go语言核心编程(临时发布版)

看到全局变量没有初始化赋值报错了。      

6、数据类型

6.1基本数据类型

整数类型:int(有符号),int8,int16,int32,int64,uint(无符号),uint8,uint16,uint32,uint64,byte,

rune(等价于int32用于unicode码)

浮点型:float32,float64

字符型:没有专门的字符型,使用byte来保存单个字母字符

布尔型:bool

字符串:string(golang将string归属为基本数据类型,这和java不同)

6.2派生/复杂数据类型

指针,数组,结构体,管道,函数,切片,接口,map

6.3整数类型详解:

int8 有符号,占用1字节,表数范围-128 -

127

int16有符号,占用2字节,表数范围-2(15次方) - 2(15次方)-1

int32有符号,占用4字节,表数范围-2(31次方) - 2(31次方)-1

int64有符号,占用8字节,表数范围-2(63次方) - 2(63次方)-1

其具体的大小和系统有关。

6.4变量使用细节

Golang默认的整数类型为int类型,Golang程序中整型变量在使用时遵守“保小不保大”的原则,即:在保证程序正确运行下,尽量使用占用空间小的数据类型。

bit是计算机中最小的存储单位,byte是计算机中最基本的存储单元。1byte = 8 bit

当我们var t =

100使用程序自行判断变量类型时,我们怎么知道变量的类型和字节大小呢,可以用fmt的Printf输出:

packagemain

import "fmt"

import "unsafe"

func main(){

var t  =100 //t是什么类型

//fmt.Println()可以用作格式化输出

fmt.Printf("t的类型 %T",t)

fmt.Printf("\n")

fmt.Printf("t占用的字节 %d",unsafe.Sizeof(t))

}

挨个import太麻烦,也不专业,可以一次性集中引入,真正开发中的写法都是import集中引入:

packagemain

import(

"fmt"

"unsafe"

)

func main(){

var t  =100 //t是什么类型

//fmt.Println()可以用作格式化输出

fmt.Printf("t的类型 %T",t)

fmt.Printf("\n")

fmt.Printf("t占用的字节 %d",unsafe.Sizeof(t))

}

运行程序显示:

t的类型 int

t占用的字节 8

Go语言核心编程(临时发布版)

未完,待续......


以上所述就是小编给大家介绍的《Go语言核心编程(临时发布版)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

自己动手做iOS App

自己动手做iOS App

张子怡 / 电子工业出版社 / 2017-8 / 69.00

《自己动手做iOS App:从设计开发到上架App Store》为想要接触iOS 应用设计、开发的读者提供了由浅入深的详细指导。从iOS 应用制作的步骤是什么,应该使用什么软件,如何发布应用到App Store,到iOS 的设计理念是什么,如何正确书写Swift 语言,再到后端和客户端是如何交互运作的等,本书配合图示,精辟、直观地阐明了iOS 应用制作中的种种疑问。 如果你是一位第一次接触i......一起来看看 《自己动手做iOS App》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器