Go 基本数据类型
Go基础语法
package main
import "fmt"
func main(){
fmt.Println("Hello world")
}
注意点:
- 花括号的左侧"{"不能另起一行,否则编译错误
- if...else语句中的else必须和if的"}"在同一行,否则编译错误
- 必须在源文件中非注释的第一行声明包名,如package main
- main()函数是每一个可执行程序所必须包含的,一般来说都是在启动后第一个执行的函数
- 声明变量必须使用,否则编译错误
Go数据类型
整型
整型分为两位,有符号和无符号两种类型
有符号类型可以存储任何整数,无符号类型只能存储自然数
在保证程序正确运行下,尽量使用占用空间小的数据类型
fmt.Printf("%T", var_name)输出变量类型
unsafe.Sizeof(var_name)查看变量占用字节
类型 | 描述 |
---|---|
uint8 | 无符号8位整型(0 到 255) |
uint16 | 无符号16位整型(0 到 65535) |
uint32 | 无符号32位整型(0 到 4294967295) |
uint64 | 无符号32位整型(0 到 18446744073709551615) |
int8 | 有符号8位整型(-128 到 127) |
uint16 | 有符号8位整型(-32768 到 32767) |
uint32 | 有符号8位整型(-2147483648 到 2147483647) |
uint64 | 有符号8位整型(-9223372036854775808 到 9223372036854775807) |
浮点型
浮点型也就是小数类型,可以存放小数。比如6.6,-12.34
- 关于浮点数在机器中存放形式的简单说明,浮点数=符号位+指数位+尾数位
- 尾数部分可能丢失,造成精度损失。-123.0000901
- golang的浮点型默认为float64类型,因为它比float32更精确
类型 | 描述 |
---|---|
float32 | IEEE-754 32位浮点型数 |
float64 | IEEE-754 64位浮点型数 |
complex64 | 32 位实数和虚数 |
complex128 | 64 位实数和虚数 |
字符和字符串
字符串就是一串固定长度的字符连接起来的字符序列。Go的字符串是由单个字节连接起来的,Go 语言的字符串的字节使用 UTF-8 编码标识 Unicode 文本。
Go语言的字符使用UTF-8编码,英文字母占一个字符,汉字占三个字符。字符可以进行运算,也就是对应的ascii相加
package main
import "fmt"
func main(){
// 单引号内只能包裹单个字符
c := 'a' // <==> var c byte = 'a'
str := "yven" // <==> var str string = "yven"
fmt.Printf("c : %v\n",c) //打印的是字符a对应的ascii码值
fmt.Printf("c : %c\n",c) //打印c : a
fmt.Printf("str : %v\n",str) // 打印 str : yven
}
字符串的两种标识形式
- 双引号,会识别字符串中的转义字符
var str = "Yven \n law" //识别其中的换行符,并换行显示
- 反引号,以字符串的原生形式输出,包括换号和特殊字符,可以实现防止攻击、输出源代码等
var str = `Yven \n lae` //原样输出
字符串拼接使用"+"
布尔型
布尔类型也叫bool类型,bool类型数据只允许取值true或false
bool类型占一个字节
使用与逻辑判断
指针
- 基本数据类型,变量存的就是值,也叫值类型
- 获取变量的地址,Go语言的取地址符是&,放到一个变量前使用就会返回相应变量的内存地址
- 指针变量存的是一个地址,这个地址指向的空间存的才是值,如:
var num int = 10
var ptr *int = &int
- 获取指针变量所指向的值,使用:* ,如:
//答应上方ptr对应的值
fmt.Println(*ptr)
详细请见:https://www.cnblogs.com/louyefeng/p/11316884.html
基本数据类型默认值
数据类型 | 默认值 |
---|---|
整型 | 0 |
浮点型 | 0 |
字符串 | "" |
字符 | 0 |
基本数据类型互相转换
Go在不同类型的变量之间需要显式转换,也就是Go的数据类型不能自动转换。
var num1 int = 777
var num2 float64 = float64(num1)
var num3 uint8 = uint8(num2)
fmt.Println(num1,num2,num3)
注意点:
- Go数据类型的转换可以是范围小转到范围大,也可以是范围大转到范围小。
- 被转换的是变量存储的数据,变量本身的数据类型并没有变化
其他类型转string类型
方式一:
func Sprintf(format string,a ...interface{}) string
Sprintf根据format参数生成格式化的字符串并返回字符串。
var num1 int = 99;
var num2 float64 = 23.456
var isTrue bool = true
var char byte = 'A'
var str string
str = fmt.Sprintf("%d", num1)
fmt.Printf("str类型为 %T str = %q\n",str, str)
str = fmt.Sprintf("%f", num2)
fmt.Printf("str类型为 %T str = %q\n",str, str)
str = fmt.Sprintf("%t", isTrue)
fmt.Printf("str类型为 %T str = %q\n",str, str)
str = fmt.Sprintf("%d", char)
fmt.Printf("str类型为 %T str = %q\n",str, str)
输出结果为
str类型为 string str = "99"
str类型为 string str = "23.456000"
str类型为 string str = "true"
str类型为 string str = "65"
方式二:
使用strconv包的函数
var num1 int = 99;
var num2 float64 = 23.456
var isTrue bool = true
var str string
str = strconv.FormatInt(int64(num1), 10)
str = strconv.Itoa(num1)
fmt.Printf("str类型为 %T str = %q\n",str, str)
str = strconv.FormatFloat(num2, 'f', 10, 64)
fmt.Printf("str类型为 %T str = %q\n",str, str)
str = strconv.FormatBool(isTrue)
fmt.Printf("str类型为 %T str = %q\n",str, str)
输出结果:
str类型为 string str = "99"
str类型为 string str = "23.4560000000"
str类型为 string str = "true"
string类型转其他类型
使用strconv包的函数
package main
import (
"fmt"
"strconv"
)
func main() {
var str string = "true"
var str1 string = "123456"
var str2 string = "123.456"
var isTrue bool
var num int64
var num2 float64
isTrue, _ = strconv.ParseBool(str)
fmt.Printf("str类型为 %T str = %v\n",isTrue, isTrue)
num, _ = strconv.ParseInt(str1, 10, 64)
fmt.Printf("str类型为 %T str = %v\n",num, num)
num2, _ = strconv.ParseFloat(str2, 64)
fmt.Printf("str类型为 %T str = %v\n",num2, num2)
}
输出结果为:
str类型为 bool str = true
str类型为 int64 str = 123456
str类型为 float64 str = 123.456
Go 基本数据类型的更多相关文章
- JavaScript 中的数据类型
Javascript中的数据类型有以下几种情况: 基本类型:string,number,boolean 特殊类型:undefined,null 引用类型:Object,Function,Date,Ar ...
- JS 判断数据类型的三种方法
说到数据类型,我们先理一下JavaScript中常见的几种数据类型: 基本类型:string,number,boolean 特殊类型:undefined,null 引用类型:Object,Functi ...
- Python高手之路【二】python基本数据类型
一:数字 int int(整型): 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位系统上,整数的位数为64位,取值 ...
- UniqueIdentifier 数据类型 和 GUID 生成函数
UniqueIdentifier 数据类型用于存储GUID的值,占用16Byte. SQL Server将UniqueIdentifier存储为16字节的二进制数值,Binary(16),按照特定的格 ...
- SQL Server常见数据类型介绍
数据表是由多个列组成,创建表时必须明确每个列的数据类型,以下列举SQL Server常见数据类型的使用规则,方便查阅. 1.整数类型 int 存储范围是-2,147,483,648到2,147,483 ...
- 由js apply与call方法想到的js数据类型(原始类型和引用类型)
原文地址:由js apply与call方法想到的js数据类型(原始类型和引用类型) js的call方法与apply方法的区别在于第二个参数的不同,他们都有2个参数,第一个为对象(即需要用对象a继承b, ...
- python 数据类型 ----字典
字典由一对key:value 组成的 python中常用且重量级的数据类型 1. key , keys, values 字典由一对key:value 组成的 python中常用且重量级的数据类型 1. ...
- SQL数据类型
1.Character 字符串: 数据类型 描述 存储 char(n) 固定长度的字符串.最多8,000个字符. n varchar(n) 可变长度的字符串.最多8,000个字符. varchar ...
- 跟着老男孩教育学Python开发【第二篇】:Python基本数据类型
运算符 设定:a=10,b=20 . 算数运算 2.比较运算 3.赋值运算 4.逻辑运算 5.成员运算 基本数据类型 1.数字 int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**3 ...
- 我的MYSQL学习心得(二) 数据类型宽度
我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...
随机推荐
- Mybatis27题
1.什么是Mybatis? Mybatis是一个半ORM(对象关系映射)框架,它内部封装了JDBC,开发时只需要关注SQL语句本身,不需要花费精力去处理加载驱动.创建连接.创建statement等繁杂 ...
- [Beta阶段]第十一次Scrum Meeting
Scrum Meeting博客目录 [Beta阶段]第十一次Scrum Meeting 基本信息 名称 时间 地点 时长 第十一次Scrum Meeting 19/05/20 大运村寝室6楼 15mi ...
- 【面向对象】第三单元总结——JML
梳理JML语言的理论基础.应用工具链情况 JML语言理论基础 JML(Java Modeling Language)是一种行为规范接口语言,通过使用不会被编译的注释形式,和固定关键字的语法,指定Jav ...
- /etc/resolv.conf文件中的search项作用
resolv.conf文件中有search项时,主机名解析规则顺序: DNS配置文件如下: # vi /etc/resolv.conf # Generated by NetworkManager se ...
- mybatis-generator 模板
generatorConfig.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE ge ...
- [zhuan]SQLSERVER 数据库性能的基本
SQLSERVER 数据库性能的基本 很久没有写文章了,在系统正式上线之前,DBA一般都要测试一下服务器的性能 比如你有很多的服务器,有些做web服务器,有些做缓存服务器,有些做文件服务器,有些做数据 ...
- unix udp sendto 最大可发送的数据长度
sendto 的最大可发送数据长度受限于两个值. 第一 [2^16 -1 - 8 -20] 第二 [SO_SNDBUF] 解释受限于[2^16-1-8-20] 数据封装过程 第一步: 用户层 : us ...
- python-- python threadpool 的前世今生
引出 首先需要了解的是threadpool 的用途,他更适合于用到一些大量的短任务合集,而非一些时间长的任务,换句话说,适合大量的CPU密集型短任务,那些消耗时间较长的IO密集型长任务适合用协程去解决 ...
- C#Selenium常用语法功能 很好的文章,值得参考收藏
https://blog.csdn.net/a1003434346/article/details/80257946 https://www.jianshu.com/p/310623afcde1 h ...
- 查找算法(4)--Fibonacci search--斐波那契查找
1.斐波那契查找 (1)说明 在介绍斐波那契查找算法之前,我们先介绍一下很它紧密相连并且大家都熟知的一个概念——黄金分割. 黄金比例又称黄金分割,是指事物各部分间一定的数学比例关系,即将整体一分为二, ...