【GoLang】go入门:go语言执行过程分析 常见数据类型(基本数据类型)

1、go语言执行过程分析

【1】执行流程分析

通过 go build 进行编译
运行上一步生成的可执行文件

在这里插入图片描述

通过 go run 命令直接运行

在这里插入图片描述
【2】上述两种执行流程的区别

  • 在编译时,编译器会将程序运行时依赖的库文件包含在可执行文件中,所以可执行文件会变大很多
  • 通过go build的方式先编译生成可执行文件,我们可以将该可执行文件拷贝到没有go环境的机器上任然可以执行
  • 通过 go run 命令来操作go源代码,在另一台机器上想要运行那么就必须要有go的环境
  • go run 的运行时间比go build 长一些

2、语法注意事项

  1. 源文件以“.go”为扩展名
  2. 程序的执行入口是main函数
  3. 严格区分大小写
  4. 方法由一条条语句构成,每个语句后不需要写分号(Go语言会在每行末尾自动增加分号,体现了Go语言的简洁性)
  5. Go编译器是逐行编译代码的,建议一行只写一条语句,当然,如果要写多条语句,需要手动添加分号进行划分(不建议)
  6. 定义的变量 || import的包没有使用到,编译器报错
  7. 大括号成对出现,且有具体的规定即:
package mainimport "fmt"
func main() { //正确写法fmt.Println("测试{}书写方式")
}func main() 
{ //错误写法,编译器报错fmt.Println("测试{}书写方式")
}

3、代码风格

1、注释:用于解释说明代码,提高程序的可读性
 go语言支持两种注释风格,分别是C语言的/**/代码块注释 和 C++风格的//行注释
 VScode中的注释快捷键:CTRL + / shift + alt + a
2、注意缩进
3、运算符两边加空格
4、行长约定
 一行最多不超过80个字符,超过的使用换行展示

4、常见数据类型介绍

主要分为两大类,分别是基本数据类型和复杂(派生)数据类型

4.1 基本数据类型

主要包括:数值型、字符型、布尔型、字符串

4.1.1 数值型

整数类型

类型有无符号占用存储空间表示的数据范围
int8有符号1字节-27~27-1
int16有符号2字节-215~215-1
int32有符号4字节-231~231-1
int64有符号8字节-263~263-1
uint8无符号1字节0~28-1
uint16无符号2字节0~216-1
uint32无符号4字节0~232-1
uint64无符号8字节0~264-1
int有符号32位OS:4字节
64位OS:8字节
-231~231-1
-263 ~ 263-1
uint无符号32位OS:4字节
64位OS:8字节
0~232-1
0 ~ 264-1
rune有符号等价int32-231~231-1
byte无符号等价uint80~28-1

针对上述的内容做一些针对性的验证,验证代码如下:
在这里插入图片描述
建议:Golang程序中在使用整型变量时,遵守保小不保大的原则,即:在保证程序正确运行的前提下,尽量使用占用空间小的数据据类型

浮点数类型
 常见的有:
  float32:4字节,表示范围:-3.403E38~3.403E38
  float64:8字节,表示范围:-1.798E308~1.798E308
浮点数可能会有精度的损失,通常情况下建议使用float64

4.1.2 字符型

字符型本质上是一个整数,也可以直接参与运算,输出字符的时候,会将对应的ASCII码输出
具体示例如下:
在这里插入图片描述

4.1.3 布尔型

true or false
1字节,多用于条件判断

4.1.4 字符串

字符串就是一串固定长度的字符连接起来的字符序列
在这里插入图片描述
基本数据的默认值

数据类型默认值
整数类型0
浮点类型0
布尔类型false
字符串类型“”

4.1.5基本数据类型之间的转换

1、Go在不同类型的变量之间赋值时需要显式转换,并且只有显式转换(强制转换)
2、语法:
  表达式T(v) 将值v转换为类型T
  T:数据类型
  v:需要转换的变量

在这里插入图片描述
基本数据类型 转 string
方式一 :fmt.Sprintf(“%参数”,表达式)
方式二:使用strconv包中的相关函数
在这里插入图片描述
string 转 基本数据类型
方式:使用strconv包下的相关函数实现
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/63789.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

多维时序 | Matlab实现BiLSTM-Adaboost和BiLSTM多变量时间序列预测对比

多维时序 | Matlab实现BiLSTM-Adaboost和BiLSTM多变量时间序列预测对比 目录 多维时序 | Matlab实现BiLSTM-Adaboost和BiLSTM多变量时间序列预测对比预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 多维时序 | Matlab实现BiLSTM-Adaboost和BiLSTM多变量时间序列预…

VScode 国内下载源 以及 nvm版本控制器下载与使用

VScode 国内下载源 进入官网 https://code.visualstudio.com/ 点击下载 复制下载链接到新的浏览器标签 将地址中的/stable前的az764295.vo.msecnd.net换成vscode.cdn.azure.cn,再回车就会直接在下载列表啦。 参考大神博客 2.使用nvm 对 node 和npm进行版本控制…

【八股】2023秋招八股复习笔记5(计算机网络-CN)

文章目录 八股目录目录1、应用层 & HTTP一些http题HTTPS 加密原理(问过)HTTP/1.1 新特性HTTP/2.0 与 RPC(问过)GET 和 POST 比较 2、传输层 & TCPTCP三次握手 & 四次挥手(问过)为什么每次TCP 连…

密码算法、密钥体系---安全行业基础篇1

一、密码算法 密码算法是一种数学和计算方法,用于保护数据的机密性和安全性。不同的密码算法使用不同的数学原理和技术来加密和解密数据。以下是一些常见的密码算法类型: 1. **对称密码算法:** 特点:相同的密钥用于加密和解密数…

Java网络爬虫——jsoup快速上手,爬取京东数据。同时解决‘京东安全’防爬问题

文章目录 介绍jsoup使用1.解析url,获取前端代码2.解决京东安全界面跳转3.获取每一组的数据4.获取商品数据的具体信息4.最终代码 介绍 网络爬虫,就是在浏览器上,代替人类爬取数据,Java网络爬虫就是通过Java编写爬虫代码&#xff0…

Django学习笔记-AcApp端授权AcWing一键登录

笔记内容转载自 AcWing 的 Django 框架课讲义,课程链接:AcWing Django 框架课。 AcApp 端使用 AcWing 一键授权登录的流程与之前网页端的流程一样,只有申请授权码这一步有一点细微的差别: 我们在打开 AcApp 应用之后会自动向 AcW…

com.squareup.okhttp3:okhttp 组件安全漏洞及健康度分析

组件简介 维护者square组织许可证类型Apache License 2.0首次发布2016 年 1 月 2 日最新发布时间2023 年 4 月 23 日GitHub Star44403GitHub Fork9197依赖包5,582依赖存储库77,217 com.squareup.okhttp3:okhttp 一个开源的 HTTP 客户端库,可以用于 Android 和 Jav…

【C++心愿便利店】No.4---C++初谈类和对象

文章目录 前言一、面向过程和面向对象初步认识二、类的引用三、类的定义四、类的访问限定符及封装五、类的作用域六、类的实例化七、类对象模型八、this指针 前言 👧个人主页:小沈YO. 😚小编介绍:欢迎来到我的乱七八糟小星球&…

C# WPF监听USB插入拨出

可以全部监听。好用 private void FormF100WriteCortexLicense_Load(object sender, EventArgs e){this.Text this.Text " " FT_Tools.Program.version;USB USBWatcher new USB();USBWatcher.AddUSBEventWatcher(USBEventHandler, USBEventHandler, new TimeSpa…

渗透测试漏洞原理之---【失效的访问控制】

文章目录 1、失效的访问控制1.1、OWASP Top 101.1.1、A5:2017-Broken Access Control1.1.2、A01:2021 – Broken Access Control 1.2、失效的访问控制类别1.2.1、水平越权1.2.2、垂直越权 1.3、攻防案例1.3.1、Pikachu靶场 Over Permision1.3.2、DVWA越权利用失效的访问控制漏洞…

MongoDB基础知识点

MongoDB基础知识点 1.MongoDB简介1.1基本信息1.2作用1.3下载 2.MongoDB安装1.Ubuntu22.042.Windows(非msi) 3.MongoDB基本操作1.基本概念2.MongoDB文件增删改查(CURD)1.插入数据2.查询数据3.修改数据4.删除数据5.删除字段 4.MongoDB实战管理系统数据库设计1.设计数据库2.Mongod…

Laravel chunk和chunkById的坑

在编写定时任务脚本的时候,经常会用到chunk和chunkById的API。 一、前言 数据库引擎为innodb。 表结构简述,只列出了本文用到的字段。 字段类型注释idint(11)IDtypeint(11)类型mark_timeint(10)标注时间(时间戳) 索引&#x…

机器学习笔记之核函数再回首:Nadarya-Watson核回归python手写示例

机器学习笔记之核函数再回首——Nadaraya-Watson核回归手写示例 引言回顾: Nadaraya-Watson \text{Nadaraya-Watson} Nadaraya-Watson核回归通过核函数描述样本之间的关联关系使用 Softmax \text{Softmax} Softmax函数对权重进行划分将权重与相应标签执行加权运算 N…

Linux centos7 bash编程——-求质数和

训练项目:使用函数求质数和。 定义一个函数IsPrime(),据此判断一个数是否为质数 由用户输入一个整数,求出比此数大的两个最小质数之和。 一、解决思路: 1.先在键盘上输入一个整数 2.求出比此数大的最小质数 3.再求出比此质数大的另一个…

ChatGPT 实现动态地图可视化展示

地图可视化分析有许多优点和好处: 1.直观理解:地图可视化使得复杂的数据更易于理解。通过地图可视化,人们可以直观地看到地理位置、地区之间的关系以及空间分布的模式。 2.提高决策效率:地图可视化可以帮助决策者快速理解和解释数据,从而提高决策效率。 3.高效的数据整…

【Pandas 入门-5】Pandas 画图

Pandas 画图 除了结合 matplotlib 与 seaborn 画图外,Pandas 也有自己的画图函数plot,它的语法一般为: DataFrame.plot(xNone,yNone, kindline,subplotsFalse, titleNone)x横坐标数据y纵坐标数据kind默认是线图,还可以是‘bar’…

基于单片机的串行通信发射机设计

一、项目介绍 串行通信是一种常见的数据传输方式,允许将数据以比特流的形式在发送端和接收端之间传输。当前实现基于STC89C52单片机的串行通信发射机,通过红外发射管和接收头实现自定义协议的数据无线传输。 二、系统设计 2.1 单片机选择 在本设计中&…

缓存技术(缓存穿透,缓存雪崩,缓存击穿)

大家好 , 我是苏麟 , 今天聊一聊缓存 . 这里需要一些Redis基础 (可以看相关文章等) 本文章资料来自于 : 黑马程序员 如果想要了解更详细的资料去黑马官网查看 前言:什么是缓存? 缓存,就是数据交换的 缓冲区 (称作Cache [ kʃ ] ),俗称的缓存就是缓冲区内的数据,是存贮数据的…

C语言——多文件编程

多文件编程 把函数声明放在头文件xxx.h中,在主函数中包含相应头文件在头文件对应的xxx.c中实现xxx.h声明的函数 防止头文件重复包含 当一个项目比较大时,往往都是分文件,这时候有可能不小心把同一个头文件 include 多次,或者头…

十六、pikachu之SSRF

文章目录 1、SSRF概述2、SSRF(URL)3、SSRF(file_get_content) 1、SSRF概述 SSRF(Server-Side Request Forgery:服务器端请求伪造):其形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能&…