Golang的语言特点

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

  1. 从C语言中继承了很多理念,包括表达式语法,控制结构,基础数据类型,调用参数传值,指针等等,也保留了和C语言一样的编译执行方式及弱化的指针。
  2. 引入包的概念,用于组织程序结构,Go语言的一个文件都要归属于一个包,而不能单独存在。
  3. 垃圾回收机制,内存自动回收,不需开发人员管理。
  4. 天然并发(重要特点):1.从语言层面支持并发,实现简单。2.goroutine,轻量级线程,可实现大并发处理,高效利用多核。3.基于CPS并发模型(Communicating Sequential Processes)实现。
  5. 吸收了管道通信机制,形成Go语言特有的管道channel通过管道channel,可以实现不同的goroute之间的相互通信。
  6. 函数可以返回多个值。
  7. 新的创新:比如切片slice,延时执行defer

Golang的开发工具介绍

  1. visual studio code Microsoft产品(VScode):一个运行于Mac OS X、Windows和Linux之上的,默认提供Go语言的语法高亮,安装Go语言插件,还可以支持智能提示,编译运动等功能。
  2. Sublime Text,可以免费使用,默认也支持Go代码语法高亮,只能保存次数达到一定数量之后就会提示是否购买,点击取消继续使用,和正式注册版本没有任何区别
  3. Vim:Vim是vi发展出来的一个文本编辑器,代码补全,编译及错误跳转等方便编译的功能特别丰富,在程序员中被广泛使用
  4. Emacs:Emacs传说中的神器,它不仅仅是一个编辑器,因为功能强大,可称为集成开发环境。
  5. Eclipse IDE工具,开源免费,并提供GoEclipse插件。
  6. LiteIDE,LiteIDE是一款专门为Go语言开发的跨平台轻量级集成开发环境(IDE),是国人开发的。
  7. JetBrains公司的产品:PhpStrom,WebStrom,和Pycharm等IDE工具都需要安装Go插件。

Windows下搭建Go开发环境-安装和配置SDK

1.介绍了SDK
1)SDK的全称(Software Development Kit 软件开发工具包)
2)SDK是提供给开发人员使用的,其中包含了对应开发语言的工具包
2.下载SDK工具包
1)Go语言的官网为 golang.org 国内可以无法访问。
2)SDK下载地址:Golang中国 https://studygolang.com/
3)如何选择对应的SDK版本:mac下的sdk 1.pak图形化安装包 2. tar.gz是解压就可以使用的。 liunx下的sdk1.如果是Linux32位系统,选择386.tar.gz。如果是64位系统选择amd.tar.gz。windows下的sdk,我们使用.zip后缀的32位系统选择368.zip 64位系统选择amd64.zip.
如何测试我们的go是否安装的sdk安装成功。

go version

windows下配置环境变量:
1.输入命令 Windows键+R 输入 sysdm.cpl 打开系统属性,选择高级点击环境变量进行配置。
选择系统变量中的Path然后点击下方的编辑,把安装go的sdk的路径进行配置进去。

Golang执行流程分析

.go文件 --> go build 编译 可执行文件(.exe或可执行文件)–>运行 结果

如果直接对源码执行 go run 源码 Go的执行流程
.go 文件 --> go run 编译运行一步到位 结果
两种执行流程的方式区别

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

Go程序开发的注意事项
1)Go源文件以 “go” 为扩展名。
2)Go应用程序的执行入口是main()函数。这个是和其它编译语言不同的
3)Go语言严格区分大小写
4)Go 方法是由一条条语句构成,每个语句后不需要分号(Go语言会再每行后自动加分号)这也体现出Golang的简洁性。
5)Go编译器是一行一行进行编译的,因此我们一行就写一条语句,不能把多条语句写到同一个,否则报错。
6)go语言定义的变量或者import的包,如果没有使用到,代码不能编译通过。
7)大括号都是成对出现的,缺一不可。
Go语言的转义字符
1)\t:表示一个制表符,通常使用它可以排版。
2)\n:换行符
3)\:一个
4) ‘’ :一个’’
5)\r :一个回车

Golang标准库API文档
Golang中文网,在线标准库文档:https://studygolang.com/pkgdoc

数据类型的基本介绍
整数类型
rune 有符号,占用空间与int32一样
byte 无符号 与uint8一样 范围0-255 当要存储字符时选用byte
整数的使用细节:
1)Golang各整数类型分为:有符号和无符号,int uint的大小和系统有关。
2)Golang的整型默认声明为int型。
3)如何在程序中查看某个变量的字节大小和数据类型(使用较多)。

fmt.Printf("a的类型%T a占用的字节数是 %d",a,unsafe.Sizeof(a))

4)Golang程序中整型变量在使用时,遵守保小不保大,既在保存程序正确运行下,尽量使用占用空间小的数据类型
5) bit:计算机中的最小存储单位。bit计算机中基本存储单元。1byte=8bit

小数类型/浮点型
说明:float64的精度比float32的要准确。
浮点型的存储分为三部分:符号位+指数位+尾数位 在存储过程中,精度会有丢失。
浮点型使用细节
1)Golang 浮点类型有固定的范围和字段长度,不受具体OS(操作系统)的影响。
2)Golang 浮点型默认声明为float64类型
3)浮点型常量有两次表示形式1.十进制 2.科学计数法
4)通常情况下,应该使用float64
字符类型
Golang中没有专门的字符类型,如果有存储单个字符(字母),一般使用byte来保存。
字符串就是一串固定长度的字符连接起来的字符序列。Go的字符串是由单个字节连接起来的,也就是说对于传统的字符串是字符组成的,而Go的字符串不同,它是由字节组成的。
Go语言的字符使用UTF-8编码,查询字符对应的utf8码值:http://www.mytju.com/classcode/tools/encode_utf8.asp
string类型使用注意细节:
1)字符串一旦赋值,字符串就不能修改了,在Go中字符串是不可变的。
2)字符串的两次表示形式
1.双引号,会识别转义字符
2.反引号,以字符串的原生形式,包括换行和特殊字符,可以实现防止攻击、输出源代码等效果。

基本数据类型的默认值:
基本数据类型的相互转换
Golang和java/c不同,Go在不同类型的变量之间赋值时需要显式转换。也就是说Golang中数据类型不能自动转换

进制

对于整数,有四种表示方式:
1)二进制:0,1。满2进1。
在Golang中,不能直接使用二进制来表示一个整数,它沿用了c的特点。
2)十进制:0-9。满10进1。
3)八进制:0-7。满8进1。以数字0开头表示。
4)十六进制:0-9及A-F,满16进1。以0x或0X开头表示。
此处的A-F不区分大小写。
二进制转十进制:
规则:从最低位开始(右边的),将每个位上的数提取出来,乘以2的位数(位数-1)次方然后求和。
1011转成十进制的数
1011 = 1 * 2^0 +1 * 2 ^1 + 0 * 2^2 +1 * 2 ^ 3 =11

八进制转换成十进制
规则:从最低位开始(右边的),将每个位上的数提取出来,乘以8的(位数-1)次方,然后求和。

十六进制转换成十进制:
规则:从最低位开始,将每个位数上的数,提取出来,乘以16的(位数-1)次方,然后求和。
0x34A =10 * 16^0 + 4 * 16^1 + 3 * 16 ^2 =842

二进制转换成八进制:
规则:将二进制数每三位一组(从最低位开始组合),转成对应的八进制即可。
11 010 101 = 03 2 5

二进制转成十六进制:
规则:将二进制数每四位一组(从低位开始组合),转成对应的十六进制数即可。
1101 0101 =0x D 5

原码、反码、补码

1)二进制的最高位是符号位:0表示正数,1表示负数。
1 ===> [0000 0001]
-1 ===> [1000 0001]
2)正数的原码,反码,补码都一样
3)负数的反码等于它原码符号位不变,其它位取反。
1 ===》 原码 [0000 0001] 反码 [0000 0001] 补码[0000 0001]
-1 ===》原码 [1000 0001] 反码 [1111 1110] 补码 [1111 1111]
4)负数的补码等于它的反码+1
5)0的反码,补码都是0
6)在计算机运算的时候,都是以补码的方式来运算的。
1+1 1-1 = 1+ (-1)


1>>2 //0000 0001 =>0000 0000 =0
1<<2 //0000 0001 => 0000 0100 =4

Golang的概述、运算符相关推荐

  1. Golang中算术运算符使用的注意事项(xin人必看)。

    1)  对于除号"/",它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃 小数部分.例如:x:=19/5,结果是3 2)  当对一个数取模时,可以等价a%b=a ...

  2. Golang GC概述

    垃圾回收 垃圾回收器一直是被诟病最多,也是整个运行中改进最努力的部分.所有变化都是为了缩短STW时间,提高程序实时性. 大事记: 2014年6月 1.3并发清理 2015年8月 1.5三色并发标记 上 ...

  3. Golang位运算符

    位运算符是对数据转换为二进制后某个位上的数进行的运算,各个语言中都有位运算符,Golang也不例外,由于位运算符的执行效率比较高,在实际开发过程中也都有使用,Golang的位运算符相较于C/C++貌似 ...

  4. java double 位运算_JAVA位运算等运算符总结

    JAVA位运算等运算符总结 一.概述 运算符是一种"功能"符号,用以通知 Java 进行相关的运算. Java 语言中常用的运算符可分为如下几种:算术运算符 赋值运算符 比较运算符 ...

  5. c++运算符优先级_C语言入门教程-(6)运算符

    1.运算符概述 运算符是一种编译器执行特定的数学或逻辑操作的符号.C语言提供了以下类型的运算符: 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 条件运算符 其他运算符 2.算术运算符 算术 ...

  6. golang 指针总结(与C/C++区别不大,就是不可以p+1偏移)

    注意 老司机,都知道,可以在C/C ++中队指针做计算,但是golang就不支持那样做了. package mainfunc main() {var x = 67var p = &xvar p ...

  7. MySQL_运算符与函数

    文章目录 运算符 数值函数 字符函数 日期时间函数 聚合函数 信息函数 加密函数 运算符 运算符概述 运算符是告诉MySQL执行特定算法或逻辑操作的符号,运算符连接表达式中各个操作数,其作用是用来指明 ...

  8. 【JavaSE】算术运算符、关系运算符、逻辑运算符、赋值运算符与三元运算符

    本专栏为 JavaSE 的学习笔记及相关项目,专栏长期免费更新 ❤️ ❤️ ❤️ ⭐️往期回顾: [JavaSE]String类与基本数据类型转换 [JavaSE]Java数据类型.变量基本使用.编码 ...

  9. java中左移运算符解释_java左移右移运算符

    位运算(只对byte.short.char.int.long有效) 左移和右移运算相当于实现整数乘以或除以2的n次方 2.7三元运算符表达式1的结果为true时,就为第二个表达式,如果为...... ...

最新文章

  1. zend studio 函数不提醒 小黄图标 小黄标
  2. java api管理工具_一个能快速写出实体类的Api文档管理工具
  3. 2016腾讯安全挑战赛第一轮-PC游戏方向
  4. GitHub CEO 回应源代码泄露:没有黑客!没有被入侵!
  5. html跳转多个域名自动选择,nginx实现两个域名之间跳转配置
  6. Cgroups控制cpu,内存,io示例
  7. 10个经典Python爬虫入门实例!你还不知道吗
  8. 关于vs2015各版本的卸载
  9. emmc host调用mmc_rescan发现设备
  10. 子群的陪集-》群的拉格朗日定理
  11. 菜菜的刷题日记 | 215. 数组中的第K个最大元素
  12. 家庭媒体中心NAS方案设计
  13. [教程] 关于一种比较特别的线段树写法
  14. Oracle 数据库访问故障(TNS-12535、TNS-00505)解决思路
  15. 苹果白屏一直显示苹果_苹果6白屏如何解决,iPhone6白苹果开不了机怎么办
  16. Python 3 怎么快速搭建服务器
  17. 计算机中文期刊abc类,计算机类国际期刊列表:
  18. 什么是条码,条码技术的应用,主要有哪些优势?
  19. Orleans 2.0 官方文档 —— 4.5 Grains - 观察者
  20. springboot使用session保存和获取参数

热门文章

  1. 创业的第一百四十八天
  2. 计算机类学术论文常见出版社对应关系
  3. 最大熵模型(MEM)
  4. Android Hook框架总结
  5. WebSocket(含表情包)-聊天室
  6. 【Java技术系列】爱情36技之追美妹的技术
  7. Debian/Ubuntu - Xen折腾秘笈
  8. 云服务器80端口_怎么查看_放开端口检测
  9. 一百多行 Python 代码手写蕃茄钟
  10. 用计算机打山有木兮,光遇山有木兮数字谱是什么?光遇山有木兮数字谱分享