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

2023-11-19

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 main

import "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 无符号 等价uint8 0~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包下的相关函数实现
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • docker宿主机访问容器_Docker容器与宿主机器通过IP内外通讯

    例如一个如下场景 在Docker环境下面运行了一个含有PHP环境的Docker容器 container 容器名称为php1 同时在宿主机 真实机器 上面有一个MySQL服务器 如何来通过 容器内部的PHP程序来访问外部的MySQL呢 原理
  • 系统架构演变详解

    文章目录 1 单体架构 2 垂直架构 3 分布式架构 4 SOA架构 5 微服务 6 集群 分布式和微服务的区别 1 单体架构 在学习 Dubbo 之后 我们先了解一下系统架构的演变过程 随着用户量的不断增加 业务功能的扩展逐步 系统架构变
  • Qt 学习之路:深入 Qt5 信号槽新语法

    在前面的章节 信号槽和自定义信号槽 中 我们详细介绍了有关 Qt 5 的信号槽新语法 由于这次改动很大 许多以前看起来不是问题的问题接踵而来 因此 我们用单独的一章重新介绍一些 Qt 5 的信号槽新语法 基本用法 Qt 5 引入了信号槽的新
  • 【沐风老师】3DMAX一款神级一键四边面重拓扑插件Quad Remesher使用教程

    Quad Remesher是一款神级一键四边面重新拓扑插件 不需要太多介绍 看下面左右图像对比就知道了 适用版本 3dmax2016 2022 不仅限于此范围 其他自行测试 安装方法 直接拖动Quad Remesher插件脚本文件包 解压后
  • Flutter 2进阶(六):回调函数的使用

    我看了一下 关于 Flutter 的回调和 Android 中的有点区别 所以记录一下 下面是定义了一个有两个参数的回调 定义回调 typedef MyCallBack Function String val1 String val2 回调
  • 程序删除自己,改写自己

    程序删除自己改写自己 有这样一个问题 让程序本身能限制它的运行次数 比如只能运行5次 目前使用的方法大都是通过读取和改写外部文件的数据来判断运行的次数 比如增加配置文件 inf 读写系统注册表 或增加其它类似文件 也就是说 程序运行要依靠外
  • linux shell java jar 使用依赖包时classpath的设置问题

    在linux下通过命令行或shell脚本执行jar包时 如果该jar包没有引用外部jar包 则非常容易 只需使用如下命令就可以实现 java jar Test jar 注意 如果在打包jar文件时 没有指定Main入口所在的类 则需要在后面
  • GD32F310 (一) LED 点灯

    作者 小飞虫科技 淘宝 首页 小虫飞科技 淘宝网 taobao com 开发板 GD32F3X0系列 使用引脚为 PB4 初始化LED void LED Init void enable the led clock rcu periph c
  • GDB断点失效

    GDB还是很深的学问 以前一直深知高并发程序调试的难度 还是要找时间去学习一下 最近多线程的问题比较多 GDB用着总是怪怪的 水还真是深呐 info thread只显示一个线程 但实际上我的线程数应该是很多的 不知道为什么其他线程都看不到
  • 刷脸支付让我们不得不感叹科技的力量

    普通消费者来说 面部识别支付提高了购物效率 大大提高了智能零售的整体体验 当消费者在超市购物时 微信刷脸支付服务商只需在一个特殊的自助结账渠道上滑动镜头即可 整个支付过程只需十秒钟以上 整个过程不需要使用手机 我们不得不感叹科技的力量 人脸
  • c语言实例--ip地址形式输出

    问题 输入一个32位的二进制的数 每8位转化为一个十进制的书 将其转化为十进制的ip地址 思路先行 第一步 总体思路 输入二进制数 然后每八个为一个小单位分开 形成一个对应的十进制数 最终形成四个ip数 第二步 分别定义存放ip的数组 存放
  • MOS管(场效应管)工作原理,及反向导通应用

    MOS管的工作原理和反向导通应用 一 电子和空穴 二 MOS管的符号 三 MOS管的结构 四 MOS管的工作原理 五 关于体二极管 六 关于空穴 七 关于MOS反向导通 一 电子和空穴 半导体中有两种载流子 自由电子和空穴 自由电子就是指不
  • 8080端口被占用_winserver服务器端口被占用时如何快速定位到是哪个程序占用?...

    概述 有同事最近遇到了一个问题 在运行某个程序的时候 总提示说程序端口被占用 不能运行 那么 在winserver下怎么知道端口是被哪个程序占用了呢 下面我们一起来看看具体内容 1 Windows查看所有的端口 点击电脑左下角的开始 然后选
  • linux awk数组操作详细介绍

    用awk进行文本处理 少不了就是它的数组处理 那么awk数组有那些特点 一般常见运算又会怎么样呢 我们先看下下面的一些介绍 结合例子我们会讲解下它的不同之处 在 awk 中数组叫做关联数组 associative arrays 因为下标记可
  • win10 禁止自动更新(修改注册表)

    如果需要在win10上做开发 禁止更新可能带来很多麻烦 参考 https blog csdn net qq 40833810 article details 89045074 depth 1 utm source distribute pc
  • sql 2008服务器响应慢,SQL Server 2008中使用链接服务器的查询速度缓慢。我可以看什么?...

    我重新写你的查询 WITH ledger detail AS SELECT pld fiscal year pld financial deptid AS DEPTID pld fund code pld class fld AS CLAS
  • androd源码编译

    下载完android 7 0 0 r1后 用du sh 查看一下 大概111G 再看看各个目录的情况 下面开始源码的编译 1 source build envsetup sh 编译环境变量设置 包括一些参数和方法 2 lunch aosp
  • JDBC的实现步骤

    一 JDBC的实现步骤 1 加载驱动程序 Class forName DriverClass 2 使用驱动管理类 获得数据库连接 Connection conn DriverManager getConnection URL USER PA
  • Python自动化测试之自定义日志及其封装

    前言 在软件测试的日常工作中 日志是个非常重要的模块 对于测试来说 日志的作用主要有以下四点 1 调试程序 2 了解系统程序运行的情况是否正常 3 系统城西运行故障分析和问题定位 4 用来做用户行为分析和数据统计 因此在编写自动化测试脚本和
  • 【GoLang】go入门:go语言执行过程分析 && 常见数据类型(基本数据类型)

    1 go语言执行过程分析 1 执行流程分析 通过 go build 进行编译 运行上一步生成的可执行文件 通过 go run 命令直接运行 2 上述两种执行流程的区别 在编译时 编译器会将程序运行时依赖的库文件包含在可执行文件中 所以可执行