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. Latex 数学符号表
  2. 7 种 JVM 垃圾收集器,看完我跪了。。
  3. 开发技巧: 简述iOS应用间的互相跳转
  4. c winform 上传文件到mysql_WinForm上传文件至服务器
  5. PHP调用tushare,python调用tushare获取沪股通、深股通成份股数据
  6. ES6学习笔记第一章
  7. 如何在Unity项目中添加语音识别?
  8. ubuntu 投影仪设置
  9. 花了三天三夜才收集整理出来的经典 SQL 数据库笔试题及答案
  10. 2022道路运输企业安全生产管理人员复训题库及答案
  11. php ajax 同时验证 用户名 密码
  12. 下载频道2013免积分人气资源大汇总
  13. Android App 增量更新实例(Smart App Updates)
  14. 数据流中的第 K 大元素
  15. 都写了100+原创了,是该分类整理一下
  16. 从富士康普工转行产品经理,月薪翻了3倍
  17. Server2003上部署Excel服务器
  18. CefSharp 中断点 已达到中断点
  19. OPPO R11t_R11st_R11Plust_R11Pluskt_R11sPlust解移动锁
  20. OpenGL学习笔记(二)-着色器-纹理

热门文章

  1. 物通博联“无人值守”污水站智能化远程管理平台
  2. 浅析HTTP请求中的referrer和Referrer-Policy
  3. 寒冰王座【暑期集训M题】【完全背包】
  4. aarch64架构(ARMv8)系统环境下编译 Ambari
  5. android为什么比iOS卡
  6. 什么是环境变量、系统变量、用户变量
  7. Java项目:springboot+vue电影院会员管理系统
  8. web前端开发技术实验与实践(第三版)储久良编著 项目5 综合编程岗位介绍
  9. Windows 下安裝 OpenCC
  10. ubuntu切换显卡和显卡切换后造成系统启动不了解决方法