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 ...
随机推荐
- SpringBoot笔记(7)
一.单元测试 1.JUnit5简介 Spring Boot 2.2.0 版本开始引入 JUnit 5 作为单元测试默认库 作为最新版本的JUnit框架,JUnit5与之前版本的Junit框架有很大的不 ...
- Python命名空间——locals()函数和globals()函数及局部赋值规则
Python使用叫做命名空间的东西来记录变量的轨迹.命名空间只是一个 字典,它的键字就是变量名,字典的值就是那些变量的值.实际上,命名空间可以象Python的字典一样进行访问,一会我们就会看到. 在一 ...
- Java并发之锁升级:无锁->偏向锁->轻量级锁->重量级锁
Java并发之锁升级:无锁->偏向锁->轻量级锁->重量级锁 对象头markword 在lock_bits为01的大前提下,只有当是否偏向锁位值为1的时候,才表明当前对象处于偏向锁定 ...
- NOIP模拟13「工业题·卡常题·玄学题」
T1:工业题 基本思路 这题有一个重要的小转化: 我们将原来的函数看作一个矩阵,\(f(i,j-1)*a\)相当于从\(j-1\)向右走一步并贡献a,\(f(i-1,j)*b\)相当于从\(i-1 ...
- jq的选择器中带有特殊符号无法获取元素
因项目需要,将元素id命名为数组(array[i].string) 使用jq去获取该id的元素时,返回的是个undefined.即jq获取不到该元素,因为该元素中的id含有特殊字符"[&qu ...
- unity渲染篇:烘焙模型贴图
今天要来做一件有趣的事情,那就是把一个模型数据烘焙到贴图上! 什么意思?就是下面酱紫,把这只小喵从第一张图拍扁,变成第二张图的样子(似乎有点残忍~) 可能你经常会从美术那边听到"烘焙光照贴图 ...
- Intel® QAT 加速卡之IPSec示例
Intel QAT 加速卡之IPSec示例 文章目录 Intel QAT 加速卡之IPSec示例 1. QAT处理IPSec入站报文 2. QAT处理IPSec出站报文 3. 组织架构 4. 示例源码 ...
- 知乎大佬图文并茂的epoll讲解,看不懂的去砍他
select.poll.epoll的文章很多,自己也看过不少经典好文.不过第一次看到讲的如此通俗易懂.又图文并茂的.因此拿来分享下,供后续翻看学习. 原文链接:https://zhuanlan.zhi ...
- POJ1426——Find The Multiple (简单搜索+取余)
题意: 给一个数n,让你找出一个只有1,0,组成的十进制数,要求是找到的数可以被n整除. 用DFS是搜索 当前位数字 (除最高位固定为1),因为每一位都只有0或1两种选择,换而言之是一个双入口BFS. ...
- scrum项目冲刺_day08总结
摘要:今日完成任务. 1.短信服务正在进行 2.注册登录功能基本实现,但缺少短信验证 3.导航在进行 4.搜索功能基本完成 总任务: 一.appUI页面(已完成) 二.首页功能: 1.图像识别功能(已 ...