Go的基本类型与变量
基本类型
- 布尔型:bool
- 长度:1字节
- 取值范围:true,false
- 注意:不可以用数字代表true或false
- 整型:int/uint
- 根据运行平台可能为32或64位
- 8位整型:int8/uint8
- 长度:1字节
- 取值范围 -128~127/0-255
- PS:int是有符号,uint是无符号
字节型:byte (uint8别名)
16位整型:int16/uint16
- 长度:2字节
- 取值范围:-32768~32768 / 0~65535
- 32位整型:int32(rune)/uint32
- 长度:4字节
- 取值范围:-2^32/2 ~ 2^32/2-1 / 0~2^32-1
- 64位整型:int64/uint64
- 长度:8字节
- 取值范围: -2^64/2 ~ 2^64/2-1 / 0~2^64-1
- 浮点型:float32/float64
- 长度:4/8字节
- 小数位:精确到7/15小数位
- 复数:complex64/complex128
- 长度8/16字节
足够保存指针的32位或64位整数型:uintptr
其它值类型
- array、struct、string
- 引用类型
- slice、map、chan
-** 接口类型:interface**
- 函数类型:func
- 在go语言中函数是可以赋值给变量的,所以函数也是一种类型
类型零值
- 零值不等于空值,而是当变量被声明为某种类型后的默认值,通常情况下值得类型的默认值为0,bool为false,string为空字符串。
package main
import (
"fmt"
)
func main() {
var a int
fmt.Println(a)
}
//此时打印出来的a的值是0,如果a为string类型的话,打印出来的值是空字符串,如果a为bool型的话,打印出来的值是false
类型别名
package main
import (
"fmt"
)
type (
文本 string
)
func main() {
var b 文本
b = "你好"
fmt.Println(b)
}
//此时也是可以进行打印的,但是不建议这样使用
单个变量的声明和赋值
- 变量的声明格式: var <变量名称> <变量类型>
- 变量的赋值格式: <变量名称> = <表达式>
- 声明的同时赋值:var <变量名称> <变量类型> = <表达式>
package main
import (
"fmt"
)
func main() {
var b int
b = 1 //先声明后赋值,当这个变量还没有要用,当你在后面的分支结构中可能要用到它,这个时候不能在结构中声明,在结构退出之后,你可能还需要其他的运算。
var c int = 1 //变量声明的同时赋值,一般用在全局变量中,全局变量不能使用:=,必须进行显式的说明
var f = 2 //不写出变量类型的区别,有可能现在是int型,你在后面进行运算是float型,这个时候用系统推断就可以保持运算的类型一致。
d := "go" //最简写法
e := false
fmt.Println(b)
fmt.Println(c)
fmt.Println(d)
fmt.Println(e)
fmt.Println(f)
}
多个变量的声明与赋值
- 全局变量的声明可以使用var()的方式进行简写
- 全局变量的声明不可以省略var,但可以使用并行的方式
- 所有变量都可以使用类型推断
- 局部变量不可以使用var()的方式简写,只能使用并行方式
package main
import (
"fmt"
)
func main() {
//var a, b, c, d int = 1, 2, 3, 4
//var a, b, c, d = 1, 2, 3, 4
//a, b, c, d := 1, 2, 3, 4
a, _, c, d := 1, 2, 3, 4 //忽略了,应用在函数的返回值当中
fmt.Println(a, c, d)
}
变量的类型转换
- Go中不存在隐式转换,所有的类型转换必须显式声明
- 转换只能发生在两种相互兼容的类型之间
- 类型的转换格式为如下
- 从严格意义上讲type newint int,这里newint并不能说是int的别名,而只是底层数据结构相同,在这里称之为自定义类型,在进行类型转换时仍旧需要显示转换,但是byte和rune确确实实为uint8和int32的别名,可以相互进行转换。
<Value> [:]= <TypeOfValueA>(ValueB)
package main
import (
"fmt"
)
func main() {
//在相互兼容的两种类型之间进行转换
var a float32 = 100.1
fmt.Println(a)
b := int(a)
fmt.Println(b)
//以下表达式无法通过编译,因为类型不兼容
var c bool = true
d := int(c)
}
- string()表示将数据转换成文本格式,因为计算机中存储的任何东西本质上都是数字,因此此函数自然地认为我们需要的是用数字65表示的文本A。
package main
import (
"fmt"
"strconv"
)
func main() {
var a int = 65
b := string(a)
c := strconv.Itoa(a)
d := strconv.Atoi(c)
fmt.Println(b)
fmt.Println(c)
fmt.Println(d)
}
//此时我们需要引用strconv的Itoa的函数,将65转换成我们想要的字符串65,如果想要逆转的话需要用Atoi函数。
Go的基本类型与变量的更多相关文章
- C# 异常:从作用域“”引用了“FiasHostApp.Entity.DBEntity.FIAS_RM_v1.ITraNetMgrUnitBaseInfoRecord”类型的变量“w”,但该变量未定义
C# 异常:从作用域“”引用了“FiasHostApp.Entity.DBEntity.FIAS_RM_v1.ITraNetMgrUnitBaseInfoRecord”类型的变量“w”,但该变量未定义 ...
- JavaScript学习笔记-基础语法、类型、变量
基础语法.类型.变量 非数字值的判断方法:(因为Infinity和NaN他们不等于任何值,包括自身) 1.用x != x ,当x为NaN时才返回true; 2.用isNaN(x) ,当x为NaN或 ...
- POJO类中的任何布尔类型的变量,都不要加is
POJO类中的任何布尔类型的变量,都不要加is,否则部分框架解析会引起序列化错误. 定义为基本数据类型boolean isSuccess:的属性,它的方法也是isSuccess(),HSF框架在反向解 ...
- 多动手试试,其实List类型的变量在页面上取到的值可以直接赋值给一个js的Array数组变量
多动手试试,其实List类型的变量在页面上取到的值可以直接赋值给一个js的Array数组变量,并且数组变量可以直接取到每一个元素var array1 = '<%=yearList =>'; ...
- C#的类型、变量和值
大学学了C#,工作也是使用C#,虽然在日常的开发中没什么大的问题,但个人觉得在C#的理解还不是很清晰,所以决定花一定的时间来理一理学过的知识,顺便革新下脑袋里的知识,因为坑爹的学校在教.net的时候, ...
- C#中隐式类型本地变量var
在新接触的项目中,看到很多声明变量时用var.只记得在javascript中声明变量用var.今天在家里看C#和.Net高级编程,看到隐式变量这一块,就总结一下C# 中隐式变量var的用法. 1.C# ...
- javascript !!的作用是把一个其他类型的变量转成的bool类型
!!的作用是把一个其他类型的变量转成的bool类型
- C# 类型和变量
C# 中的类型有两种:值类型 (value type) 和引用类型 (reference type).值类型的变量直接包含它们的数据,而引用类型的变量存储对它们的数据的引用,后者称为对象.对于引用类型 ...
- .Net程序员学用Oracle系列(26):PLSQL 之类型、变量和结构
1.类型 1.1.属性类型 1.2.记录类型 2.变量 2.1.变量类型 2.2.变量定义 2.3.变量赋值 3.结构 3.1.顺序结构 3.2.选择结构 3.3.循环结构 4.总结 1.类型 在&l ...
- JavaScript总体的介绍【JavaScript介绍、定义函数方式、对象类型、变量类型】
什么是JavaScript? 我们可以从几个方面去说JavaScript是什么: 基于对象 javaScript中内置了许多对象供我们使用[String.Date.Array]等等 javaScrip ...
随机推荐
- 在Win环境下配置java的环境进行开发步骤
1.下载官方JDK,网址如下 http://www.oracle.com/technetwork/java/javase/downloads/index.html
- SPRING框架中ModelAndView、Model、ModelMap区别及详细分析
转载内容:http://www.cnblogs.com/google4y/p/3421017.html 1. Model Model 是一个接口, 其实现类为ExtendedModelMap,继承了M ...
- poj 1753 2965
这两道题类似,前者翻转上下左右相邻的棋子,使得棋子同为黑或者同为白.后者翻转同行同列的所有开关,使得开关全被打开. poj 1753 题意:有一4x4棋盘,上面有16枚双面棋子(一面为黑,一面为白), ...
- django后台admin管理布局
在model模块里设置 class pc_info(models.Model): ip = models.CharField(max_length=64) sn = models.CharField( ...
- yum-阿里源配置
原文:https://opsx.alibaba.com/mirrorCentOS 1.备份 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/ ...
- expect 安装使用
expect 命令相当于crt远程连接,可用于脚本化实现多服务器巡检功能. 一.expect 命令安装: 1.rpm 文件下载:百度云链接:http://pan.baidu.com/s/1sl1wSU ...
- unigui的ServerModule常用属性设置
unigui的ServerModule常用属性设置 1)压缩设置 compression是压缩数据用的.默认启用压缩,且压缩级别是最大的. 2)UNIGUI运行时库设置 UNIGUI需要4个运行时库, ...
- 用XPath查找HTML节点或元素
更新版以后会在我的新博客更新,请您移步 https://blog.clso.fun/posts/2019-03-03/46.html 虽然JQ和JS都能很方便的查找包含了ID及类名的元素,但某些情况下 ...
- WPF实现可视化控件打印及打印预览
打印预览XAML代码: <controls:WindowEx x:Class="SunCreate.Vipf.Client.UI.MapPrintPreview" xmlns ...
- Nodejs的模块系统
global对象 浏览器端JavaScript中的全局对象为"window",在浏览器中定义的变量都会成为"window"对象的属性. 不像浏览器端JavaSc ...