Go | 基本数据类型详解
前言
基本数据类型,变量存的就是值,也叫值类型。每一种数据都定义了明确的数据类型,在内存中分配了不同大小的内存空间。

Printf 和 Println 的区别
printf 输出后不换行, println输出后自动换行;
printf 格式化输出,println 直接输出内容
Printf 根据format参数生成格式化的字符串并写入标准输出。
判断数据类型以及查看变量使用内存空间
package main
// import "unsafe"
// import "fmt"
// 引入多个
import (
"fmt"
"unsafe"
)
func main() {
var i int8 = 12
fmt.Println("i= ", i)
var i2 uint8 = 129
fmt.Println("i2= ", i2)
var n = 12
fmt.Printf("n的类型是%T\n", n) // n的类型是int
var name = "xiao"
fmt.Printf("name的类型是%T\n", name) // name的类型是string
// 查看变量占用的字节大小和数据类型
fmt.Printf("name的类型是%T", name, unsafe.Sizeof(name))
}
基本数据类型
数值型
整数类型 (默认值是0)
int, int8, int16, int32, int64
uint, uint8, uint16, uint32, uint64 无符号数(表示的范围更大)
byte
bit: 计算机中的最小存储单位
byte: 计算机中基本存储单元
1byte = 8bit (一个字节8位)



var i int8 = -129
// constant -129 overflows int8
var i2 uint8 = -129
// constant -129 overflows uint8
浮点类型 (默认值是0)
float32
float64(默认类型)

浮点数 = 符号位 + 指数位 + 尾数位
浮点数都是有符号的
使用浮点类型的时候就需要注意存在丢失精度的问题
var num1 float32 = 12.556883123132 // 精度会丢失
var num2 float64 = 12.556883123132 // 64位比32位精度要准确
fmt.Println("num1=", num1, "num2", num2) // num1= 12.556883 num2 12.556883123132
var num = 12.64
fmt.Printf("num的类型", num) // num的类型%!(EXTRA float64=12.64)
var num3 = 5.6e2 // 5.6 * 10^2 = 5.6 * 100 = 560
fmt.Println("num3=", num3)
字符型
没有专门的字符型,使用byte来保存单个字母字符
ASCII码(128个)
Go语言的字符使用UTF-8编码
英文字母:1个字节
汉字:3个字节
字符必须使用单引号括起来,双引号会报错
单引号针对单个字符,字符串要使用双引号
UTF-8是对ASCII的扩容
var str1 byte = 'a'
var str2 byte = '0'
// 当直接输出byte时,输出的使对应字符的ASCII码值(十进制)
fmt.Println("str1", str1, "str2", str2) // str1 97 str2 48
fmt.Printf("str1=%c str2=%c", str1, str2) // str1=a str2=0
fmt.Printf("str1=%c", str1) // str1=a
fmt.Printf("str2=%c", str2) // str2=0
var name byte = '吖'
fmt.Printf("name=%c", name) // overflows byte 超出byte类型的存储范围了
// 汉字更换成int类型
var name int = '吖'
fmt.Printf("name=%c", name) // name=吖
var name1 int =22269
fmt.Printf("name1=%c", name1) // name1=国
// 数据类型只是为了定义存储空间的大小,对应计算机中的内存空间

布尔型(bool)(默认值是false)
用于逻辑运算,流程控制。bool类型只占用一个字节的内存空间
var a = false
fmt.Println(a) // false
fmt.Println(unsafe.Sizeof(a)) // 1
字符串(string)(默认值是"")
UTF-8编码
字符串一经定义,则不能修改
var address string = "北京长城"
fmt.Println(address) // 北京长城
var str = "hello"
str[0] = 'a' // cannot assign to str[0] (strings are immutable)
fmt.Println(str)
// 反引号
// 以字符串原生形式输出,包括换行和特殊字符,可以实现防止攻击、输出源代码等效果。
// 字符串拼接, + 号要放在上面,否则会报错(因为go默认在一行后面加;号)
var str01 = "hello" + " world"
str01 += " haha!" + "xixi" +
"heihei"
fmt.Println(str01) // hello world haha!xixiheihei
基本数据类型的默认值
var a int
var b float32
var c float64
var d bool
var e string
// %v表示按照变量的值输出
fmt.Printf("a=%d,b=%v,c=%v,d=%v e=%v", a,b,c,d,e)
上面输出: a=0,b=0,c=0,d=false e=
派生/复杂数据类型
指针(Pointer)
数组
结构体(struct)
管道(Channel)
函数
切片(slice)
接口(interface)
map
后面陆续讲解复杂数据类型。
我是 甜点cc
热爱前端,也喜欢专研各种跟本职工作关系不大的技术,技术、产品兴趣广泛且浓厚,等待着一个创业机会。本号主要致力于分享个人经验总结,希望可以给一小部分人一些微小帮助。
希望能和大家一起努力营造一个良好的学习氛围,为了个人和家庭、为了我国的互联网物联网技术、数字化转型、数字经济发展做一点点贡献。数风流人物还看中国、看今朝、看你我。
Go | 基本数据类型详解的更多相关文章
- MySQL 数据类型 详解
MySQL 数据类型 详解 MySQL 的数值数据类型可以大致划分为两个类别,一个是整数,另一个是浮点数或小数.许多不同的子类型对这些类别中的每一个都是可用的,每个子类型支持不同大小的数据,并且 My ...
- oracle 数据类型详解---日期型(转载)
oracle 数据类型详解---日期型 oracle数据类型看起来非常简单,但用起来会发现有许多知识点,本文是我对ORACLE日期数据类型的一些整理,都是开发入门资料,与大家分享: 注:由于INTER ...
- python之数据类型详解
python之数据类型详解 二.列表list (可以存储多个值)(列表内数字不需要加引号) sort s1=[','!'] # s1.sort() # print(s1) -->['!', ' ...
- python 数据类型详解
python数据类型详解 参考网址:http://www.cnblogs.com/linjiqin/p/3608541.html 目录1.字符串2.布尔类型3.整数4.浮点数5.数字6.列表7.元组8 ...
- redis详解(二)-- 数据类型详解
Redis常用数据类型详解 1,Redis最为常用的数据类型主要有以下: String Hash List Set Sorted set pub/sub Transactions 在具体描述这几种数据 ...
- python数据类型详解(全面)
python数据类型详解 目录1.字符串2.布尔类型3.整数4.浮点数5.数字6.列表7.元组8.字典9.日期 1.字符串1.1.如何在Python中使用字符串a.使用单引号(')用单引号括起来表示字 ...
- 转 python数据类型详解
python数据类型详解 目录 1.字符串 2.布尔类型 3.整数 4.浮点数 5.数字 6.列表 7.元组 8.字典 9.日期 1.字符串 1.1.如何在Python中使用字符串 a.使用单引号(' ...
- 2-2和2-3基本数据类型 & 2-4基本数据类型详解 & 3-1和3-2整形字面量值及变量声
2-4基本数据类型详解 3-1和3-2整形字面量值及变量声 023是八进制的 0x1357是十六进制 0X3C也是十六进制 0x1abL:长整型 变量声明 数据类型 空格 变量名 赋值: 变量的定义:
- Python数据类型详解——列表
Python数据类型详解--列表 在"Python之基本数据类型概览"一节中,大概介绍了列表的基本用法,本节我们详细学一下列表. 如何定义列表:在[]内以英文里输入法的逗号,,按照 ...
- Python数据类型详解——元组
Python数据类型详解--元组 有时候我们的列表数据不想被别人修改时该怎么办? 此时,就可以使用元组来存放,元祖又称为只读列表,不能修改 定义方式:与列表类似,将列表的[]换成()即可. 特性: 1 ...
随机推荐
- Linux环境监控工具汇总
GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. Linux 操作系统有诸多自带和第三方的监控工具,以下从不同维度来整理常用的一些监控工具. CPU top(经典的Linu ...
- 用lambda表达式和std::function类模板改进泛型抽象工厂设计
- C++ 特殊矩阵的压缩存储算法
1. 前言 什么是特殊矩阵? C++,一般使用二维数组存储矩阵数据. 在实际存储时,会发现矩阵中有许多值相同的数据或有许多零数据,且分布呈现出一定的规律,称这类型的矩阵为特殊矩阵. 为了节省存储空间, ...
- 记录一个i变量引发的事故
概述 近期开发中遇到一个特别的问题,觉得很有必要与你下来.就是由于在开发中一个很小的疏忽,导致了很大的问题,是什么呢? 现象 我的程序突然引发了v8内部的错误,提示都是c++的,如下.程序一启动就直接 ...
- 一文理解Hadoop分布式存储和计算框架入门基础
@ 目录 概述 定义 发展历史 发行版本 优势 生态项目 架构 组成模块 HDFS架构 YARN架构 部署 部署规划 前置条件 部署步骤 下载文件(三台都执行) 创建目录(三台都执行) 配置环境变量( ...
- Dynamic CRM一对多关系的数据删除时设置自动删除关联的数据
在业务实体中主子表非常常见,然后子表可能有会有自己的子表或者多对多关系,在删除的业务场景下,删除主数据,剩余的子数据就成了脏数据, 之前的做法是,监听主表的删除事件,然后在插件中找到其下的子表数据然后 ...
- Shell第一章《变量》
shell前言 什么是shell shell-'壳' 命令解释器,一种应用程序 shell语言特点 SHELL语言是指UNIX操作系统的命令语言,同时又是该命令语言的解释程序的简称. Shell本身是 ...
- ARC122D XOR Game(博弈论?字典树,贪心)
题面 ARC122D XOR Game 黑板上有 2 N 2N 2N 个数,第 i i i 个数为 A i A_i Ai. O I D \rm OID OID(OneInDark) 和 H I D ...
- 模拟赛:树和森林(lct.cpp) (树形DP,换根DP好题)
题面 题解 先解决第一个子问题吧,它才是难点 Subtask_1 我们可以先用一个简单的树形DP处理出每棵树内部的dis和,记为dp0[i], 然后再用一个换根的树形DP处理出每棵树内点 i 到树内每 ...
- 跟我学Python图像处理丨何为图像的灰度非线性变换
摘要:本文主要讲解灰度线性变换,基础性知识希望对您有所帮助. 本文分享自华为云社区<[Python图像处理] 十六.图像的灰度非线性变换之对数变换.伽马变换>,作者:eastmount . ...