Q_Go1
Go语言的特点及优势
一、Go语言设计初衷(为什么设计Go语言?)
1.1、设计Go源是为了解决当时Google开发遇到的困难:
大量的C++代码,同时有引入了Java和Python
成千上万的工程师
数以万计的代码
分布式的编译系统
数百万的服务器
1.2、Google开发中的痛点
编译慢
失控的依赖
每个工程师只是用了一个语言里面的一部分
程序难以维护(可读性差,文档不清晰等)
更新的花费越来越长
交叉编译困难
1.3、Go语言的特色
没有继承多态的OO
强制一致类型
interface不需要显示声明(Duch Typing)
没有异常处理(Error is value)
基于首字母的可访问特性
不用import或者变量引起编译错误
完整而卓越的标准库包
二、Go语言的优势
1.学习曲线容易
Go语言语法简单,包含了类C语法,因为Go语言容易学习,所以一个普通的大学生花几个星期就能写出来可以上手的,高性能的应用。
2.效率:快速的编译时间,开发效率和运行效率高
开发过程中相当于Java和C++呆滞的编译速度,Go的快速编译时间是一个主要的效率优势。Go拥有接近C的运行效率和接近PHP的开发效率
3.出身名门,血统纯正
4.自由高效:组合的思想,无侵入式的接口
5.强大的标准库
这包括互联网应用,系统编程和网络编程。网络层,系统层的库非常实用。
6.部署方便:二进制文件,Copy部署
7.简单的并发
8.稳定性
Go语言主要有静态语言,天生并发,内置GC(垃圾回收),安全性高,语法简单,编译快速这几个特性,这决定了Go的三个高富帅特性:运行快,开发快和部署快。
9.Go语言能开发什么?
服务器编程,以前你如果使用C或者C++做的那些事情,用Go来做很合适,例如:处理日志,数据打包,虚拟机处理,文件系统。
分布式系统,数据库代理等,例如ETCD
网络编程,这一块目前应用最广,包括:Web应用,API应用,下载应用,而Go内置的net/http包基本上把我们平常用到的网络功能都实现了
数据库操作
开发云平台,目前过内外很多云平台在采用Go开发
三、Golang安装配置
3.1 下载适合自己电脑的Golang
https://golang.org/dl/
https://www.studygolang.com/dl
3.2 Goland 下载
# 官网
https://www.jetbrains.com/go/download/#section=windows
# 如果打不开goland的网站,点击下面的这一个网站
https://www.glxxw2018.com/study/blog/detail/apWOUsSh0N.html
四、HelloWorld程序解释及Go 编码规范
目录:
第一个HelloWorld程序解释
Go语言编码规范
Go语言关键字及保留字
Go程序结构组成
4.1HelloWorld程序解释
4.1.1第一个HelloWorld程序
package main
import "fmt"
func main(){
/* 这是第一个简单的程序 */
fmt.Println("Hello,World!")
}
4.1.2 程序解释
第一行代码package main定义了包名。必须在源文件中注释的第一行指明这个文件属于哪个包,如:package main package main表示一个可独立执行的程序,每个Go应用程序都包含一个名为main的包。
下一行import "fmt"告诉Go编译器这个程序需要使用fmt包,fmt包实现了格式化IO(输入/输出)的函数。
下一行func main()是程序入口。main函数是每一个可执行程序所必须包含的。一般来说都是在启动后第一个执行的函数,如果有main()函数则会先执行init()函数
下一行/*...... */是注释。在程序执行时将被忽略。单行注释是最常见的注释形式,你可以在任何地方使用以//开头的单行注释。。多行注释也叫块注释,均以 / * 开头,并以 * /结尾。且不可以嵌套使用,多行注释一般用于文档描述或代码片段。
下一行fmt.Println(...)可以将字符串输出到控制台,并在最后自动增加换行符\n。使用fmt.Print("Hello,World\n")可以得到相同的结果。
4.2 Go语言编码规范
4.2.1 注释
单行注释是最常见的注释形式,你可以在任何地方使用以//开头的单行注释
多行注释也叫块注释,均以/* 开头,并以*/结尾,且不可以嵌套使用,多行注释一般用于文档描述或注释成块的代码片段。
4.2.2 标识符
标识符用来命名变量,类型等程序实体。一个标识符实际上就是一个或是多个字母(A~Z和a~z)数字(0~9),下划线组成的序列,但是第一个字符必须是字母或者下划线为不能是数字。
Go不允许在标识符中使用@,$和%等标点符号。
Go是一种区分大小写的编程语言,因此,Manpower和manpower是两个不同的标识符。
以下是无效的标识符:
1xy(以数字开头)
case(Go语言关键字)
chan(Go语言关键字)
x+y(运算符是不允许的)
4.2.3 Go语言的空格
Go语言中变量的声明必须使用空格隔开。如:var age int;
语句中适当使用空格能让程序更容易阅读。
在变量与运算符间加入空格,程序看起来更加美观,如:
a = x +y
4.2.4 语句的结尾
在Go程序中,一行代表一个语句结束,Go语言中是不需要类似于Java需要分号结尾,因为这些工作都将由Go编译器自动完成。
如果打算将多个语写在同一行,它们则必须使用分号";"人为区分,但在实际开发中并不鼓励这种做法。
4.2.5 可见性规则
Go语言中,使用大小写来决定标识符(常量,变量,类型,接口,结构或函数)是否可以被外部包所调用。
以一个大写字母开头,那么使用这种形式的标识符的对象就可以被外部包的代码所使用(使用时程序需要先导入这个包),如同面向对象语言中的public
如果以小写字母开头,则对包外时不可见的,但是他们在整个包的内部时可见并且可用的,像面向对象语言中的private
五、Go程序结构组成
5.1 Go一般结构
// 当前程序的包名
package main
// 导入其他包
import . "fmt"
// 常量定义
const PI = 3.14
// 全局变量的声明和赋值
var name = "gopher"
// 一般类型声明
type newType int
// 结构的声明
type gopher struct{ }
// 接口的声明
type golang interface{ }
// 由main函数作为程序入口点启动
func main() {
Println("Hello,World!")
}
5.2 Go文件的基本组成部分
包声明
引入包
函数
变量
语句 & 表达式
注释
5.3 Go文件结构组成
5.3.1 Go程序是通过package来组织的
只有package名称为main的包可以包含main函数
一个可执行程序有且仅有一个main包
通过import关键字来导入其他非main包
可以通过import关键字单个导入,也可以同时导入多个
5.3.2 程序一般由关键字,常量,变量,运算符,类型和函数组成。
5.3.3 程序中可能会使用到这些分隔符: 括号(),中括号[]和大括号{}
5.3.4 程序可能会使用到这些标点符号:
点 .
逗号 ,
分号 ;
冒号 :
省略号 (三个点) ...
5.3.5 通过const关键字来进行常量的定义。
5.3.6 通过在函数体外部使用var关键字来进行全局变量的声明和赋值
5.3.7 通过type关键字来进行结构(struct)和接口(interface)的声明
5.3.8 通过func关键字来进行函数的声明
Q_Go1的更多相关文章
随机推荐
- 51Nod1049 最大子段和
我们来先看题: N个整数组成的序列a1,a2,a3,-,an,求该序列如ai+ai+1+-+aj的连续子段和的最大值.当所给的整数均为负数时和为0. 例如:-2,11,-4,13,-5,-2,和最大的 ...
- 把a表格的内容读取出来,然后写到b表格
把a表格的内容读取出来,然后写到b表格 #!/usr/bin/env python3 import sys #控制台要输入的两个参数格式为:python script_name.py 参数1 参数2 ...
- Android自定义View——自定义ViewPager
第一部分:自定义ViewGroup的使用,手势识别器和Scroller滑动 第二部分:处理滑动监听,处理滑动冲突,增加ViewPager的指示器 常见的滑动冲突:外部滑动方向和内部滑动方向不一 ...
- P1426 小鱼会有危险吗
题解: 在测试数据里有一个是临界值问题,探测范围是闭区间 #include<stdio.h>int main(){ double s,x; //注意:此 ...
- [XNUCA2019Qualifier]EasyPHP
0x00 知识点 预期解中知识点: htaccess生效 如果尝试上传htaccess文件会发现出现响应500的问题,因为文件尾有Just one chance 这里采用# \的方式将换行符转义成普通 ...
- JAVA多线程的基础
线程与进程的区别 1.线程与进程 每个正在系统上运行的程序都是一个进程.每个进程包含一到多个线程.线程是一组指令的集合,或者是程序的特殊段,它可以在程序里独立执行.也可以把它理解为代码运行的上下文.所 ...
- IP欺骗(XFF头等)
很多时候需要伪造一些http头来绕过WAF 1.X-Forwarded-For: 简称XFF头,它代表客户端,也就是HTTP的请求端真实的IP,只有在通过了HTTP 代理或者负载均衡服务器时才会添加该 ...
- (1)opencv的安装和遇到的问题
opencv的安装主要是看的这个博客 https://blog.csdn.net/w_chaoqi/article/details/81949738 然后在把代码粘贴上时,出现,不识别我的opencv ...
- vue点击变色
<template> <div> <router-link to="/w1">点击回去</router-link> <div ...
- 吴裕雄--天生自然MySQL学习笔记:MySQL 导入数据
1.mysql 命令导入 使用 mysql 命令导入语法格式为: mysql -u用户名 -p密码 < 要导入的数据库数据(runoob.sql) 实例: # mysql -uroot -p12 ...