Go变量与基础数据类型
一、基础介绍
Go 是静态(编译型)语言,是区别于解释型语言的弱类型语言(静态:类型固定,强类型:不同类型不允许直接运算)
例如 python 就是动态强类型语言
1、Go 的特性:
跨平台的编译型语言,交叉编译
管道(channel),切片(slice),并发(routine)
有垃圾回收机制
支持面向对象和面向过程的编程模式(Go 的面向对象没有类的概念)
2、Go 的常用命令:
go env // go的环境变量
-GO111MODULE= // 空的,现在没有使用MODULE模式
-GOPATH=C:\Users\oldboy\go // 代码存放路径
-GOROOT=c:\go // go sdk安装路径
go build // 编译型语言,需要先编译再执行,编译成可执行文件,执行可执行文件
go run // 编译并执行,开发阶段用,两步并作一步
go get // 下载并安装包和依赖等同于pip install
go version
go fmt // 运行gofmt进行格式化(go fmt :自动将代码格式)
3、Hello Word
// 单行注释
/*
多行注释
多行注释
*/
// Go(所有编译型语言)项目要运行,必须有一个入口
// Go 的入口是 main 包下的 main 函数
// main 包下可不可以有多个 main 函数
package main // 声明包名,包名是 main,每一个 Go 文件都属于某个包
import "fmt" // 导入包,内置包
func main() { // 定义了一个main函数,大括号包裹是函数体的内容
fmt.Println("Hello World") // 打印函数等同与print()
}
// 编译
go build s1.go
// 执行
s1.exe
// 编译并执行
go run s1.go
// 在goland中,右键,运行即可
二、变量
go 语言的变量定义方式主要分为三种方式,并且不能重复定义。
定义方式
1、方式一:全定义
// var 变量名 变量类型 = 变量值
package main
import "fmt"
func main() {
var age int = 10 // 在go中,变量定义了就必须使用,如果不使用就报错
fmt.Println(age)
}
2、方式二:类型推导(类型就不需要写了)
package main
import "fmt"
func main() {
var age = 20
var name = "XiaoYang"
fmt.Println(age, name)
fmt.Printf("%T\n",name) // 查看变量类型 \n表示换行
fmt.Printf("%p",&name) // 查看变量内存地址
}
// 输出
20 XiaoYang
string
0xc000056230
3、方式三:简略声明(类型和 var 关键字都不写)
package main
import "fmt"
func main() {
age := 20
var age int = 30 // 重复定义会报错,不能重复定义
fmt.Println(age)
}
4、其他定义方式:其他定义方式都是在前三种方式的基础上做出变形而出现的:
只定义不赋值
var age int // 定义变量,如果只定义不赋值,只能用这种方式
var age // 错误,无法判断类型
声明多个变量
var width, height int = 100, 50 // 声明多个变量
var width, height = 100, 50 // 声明多个变量
var width, height = 100, "XiaoYang" // 声明多个变量
width, height := 100, "XiaoYang" // 声明多个变量
声明多个变量,并赋初始值
var (
name = "XiaoYang"
age int = 20
height int
)
fmt.Println(name, age, height)
注意:
var age int = 20
name, age := "XiaoYang", 21
// 这种情况不会报错,我们觉得是重复定义,冒号左侧只要有一个没有定义过得变量就可以。
fmt.Println(name, age)
总结:
- 变量类型在定义阶段就确定了,一旦确定,不允许改变
- 变量不可以重复定义
- 变量要先定义在使用
变量定义规范
- 变量命名建尽量使用驼峰(大小写有特殊意义)
- Go 文件命名建议用下划线
- 一个名字必须以一个字母(Unicode字母)或下划线开头,后面可以跟任意的字母、数字或下划线
- 大写字母和小写字母是不同的:Name 和 name 是两个不同的变量
- 关键字和保留字都不建议用作变量名
三、常量
常量定义的定义使用 const 关键字定义,不允许改变
方式一:
package main
import "fmt"
func main() {
const age int = 20 // 不允许修改,修改会报错
fmt.Println(age)
}
方式二:类型推导
package main
import "fmt"
func main() {
const age = 20
fmt.Println(age)
}
注意:不能使用 := 这种方式定义,这样就是定义变量了
四、基础数据类型
1、数字
// 有符号整形
int: 在32位机器是int32,在64位机器是int64
int8: 表示整数范围是:8个比特位,8个bit是1byte ,第一位表示正负数0/1, 所以是2的7次方-1 的范围
int16: 2的15次方减一
int32: 2的32次方减一
int64: 2的64次方减一
byte: 等于int8
short: 等于int16
// 无符号整形
uint8: 没有负数表示,所以是2的8次方减一
uint16: 同上
uint32:
uint64:
2、浮点型(小数,32/64表示小数点后长度多少位)
float32
float64
3、布尔(Bool)
// 数据类型默认值:
数字类型是 0
字符串类型是 空字符串
布尔类型 false
4、字符串
// 双引号包裹
// 单引号包裹
Go变量与基础数据类型的更多相关文章
- python变量与基础数据类型
一.什么是变量 变量是什么? 变量:把程序运行的中间结果临时的存在内存里,以便后续的代码调用.在python中一切都是变量. 1.python变量命名的要求 1,必须有数字,字母,下划线任意组合. ...
- python基础(变量、基础数据类型、流程控制)
今日内容html {overflow-x: initial !important;}:root { --bg-color:#ffffff; --text-color:#333333; --select ...
- Python入门 .变量 常量 基础数据类型 用户输入 流程控制语句 小练习题
# 2.name = input(“>>>”)通过代码来验证name变量是什么数据类型?--str name = input(">>>") pr ...
- Python十讲 - 第二讲:变量和基础数据类型
本讲主要内容 变量 字符串 数字和运算符 数据类型转换 2.1 变量 1. 变量是什么? 变量,是指把程序运行的中间结果临时的存在内存里,以便后续的代码调用,其值可以修改. 在python中,当变量被 ...
- [ python ] 变量及基础的数据类型
python2 和 python3 不同的编码方式 python2 默认编码方式是 ascii码 python3 默认编码方式是 utf-8 具体表现为:当 python3 和 python2 在打印 ...
- 316python 基础之计算机基础、Python简介、变量、注释、基础数据类型初识、if、while、语句
一.计算机基础. cpu:相当于人的大脑,运算与控制中心. 速度 飞机 内存:4G,8G,16G....暂时存储,供给cpu数据. 速度 高铁.成本高,断电即消失. 硬盘:相当于你电脑的数据库,存储着 ...
- day01——python初始、变量、常量、注释、基础数据类型、输入、if
python的历史: 04年Django框架诞生了 内存回收机制是什么(面试题) python2:源码不统一,有重复的功能代码 python3:没有重复的功能代码 python是一个什么的编程语言 编 ...
- Python 学习随笔 - 1 - 基础数据类型、变量 及 基本运算
仅有的C语言的基础都是大学时学的: 准备赶潮流,开始学习Python. 随笔记录学习过程中,靠一点点C语言基础难以去理解的地方,以及区别于C语言的地方,做些笔记作为以后参考. Python 解释器直接 ...
- 简介、变量、常数、if、基础数据类型、注释、input()
### 1.python的历史 python2和python3的区别 python2 源码不统一,重复代码 python 源码统一,没有重复代码 2004 Django框架的诞生 2.python ...
随机推荐
- Quartz任务调度(2)CronTrigger定制个性化调度方案
Cron表达式 1. 时间字段与基本格式 Cron表达式有6或7个空格分割的时间字段组成: 位置 时间域名 允许值 允许的特殊字符 1 秒 0-59 ,-*/ 2 分支 0-59 ,-*?/ 3 小时 ...
- 三 MongoDB进阶
1 Limit方法 概念:查询指定数量的数据,该方法接受一个数字参数作为查询记录数的数量 举个例子:查询集合col中最多2条记录数 2 Skip方法 概念:查询到的结果集中,跳过指定数量的数据,该方法 ...
- numpy、pandas、scipy、matplotlib、jieba、 openpyxl、pillow的安装
cmd环境下进入python安装包里的Script文件夹 安装numpy 安装pandas 安装scipy 安装matplotlib 安装jieba(应该是之前装的库安装依赖时下载了) 安装openp ...
- 微信小程序学习笔记三 路由的基本使用
小程序中路由的使用 1.1 页面路由 在小程序中, 所有页面的路由全部由框架进行管理 1.2 页面栈 框架以栈的形式维护了当前的所有页面, 当发生路由切换的时候, 页面栈的表现如下: 1.3 获取当前 ...
- 多源最短路径,一文搞懂Floyd算法
前言 在图论中,在寻路最短路径中除了Dijkstra算法以外,还有Floyd算法也是非常经典,然而两种算法还是有区别的,Floyd主要计算多源最短路径. 在单源正权值最短路径,我们会用Dijkstra ...
- MySQL-存储引擎-Myisam
mysql> create table myisam_char(name char(10)) engine=myisam; Query OK, 0 rows affected (0.01 sec ...
- 简单三分钟,本地搭建 k8s
使用 minikube 在本地搭建 k8s 已经比以前要简单很多了.本文,我们通过简短的三分钟来重现一下在本地搭建 k8s 实验环境的步骤. Newbe.Claptrap 是一个用于轻松应对并发问题的 ...
- 【进阶之路】持续集成、持续交付与持续部署(CI/CD)
由来 记得7月份刚刚换工作的时候,中午和老大一起去吃饭,回来的路上老大问我:"南橘,CI/CD有没有研究过?" 我隐隐约约在哪里听过这个名词,但是又想不起来,秉着实事求是的态度,我 ...
- JDK1.8源码(八)——java.lang.ThreadLocal类
https://www.cnblogs.com/xdd666/p/14734047.html ThreadLocal https://www.cnblogs.com/yanfei1819/p/1473 ...
- Servlet生命周期和方法
一.五个生命周期方法,有三个很重要,初始化方法.提供服务方法和销毁方法 1.三个主要方法 2.另外两个重写的成员方法只做了解 二.生命周期详解 其中,每次刷新页面都是一次对servlet访问: 页面访 ...