基本数据类型

bool
string
int int8 int16 int32 int64
uint uint8 uint16 uint32 uint64 uintptr
byte // alias for uint8
rune // alias for int32, represents a Unicode code point
float32 float64
complex64 complex128

类型转化

  • Go语言不允许隐式类型转换
  • 别名和原有类型也不能进行隐式类型转换

不允许隐式类型转换

package type_test

import "testing"

func TestImplicit(t *testing.T) {
var a int = 1
var b int64
b = a
t.Log(a, b)
}

输出

# command-line-arguments_test [command-line-arguments.test]
./type_test.go:10:4: cannot use a (type int) as type int64 in assignment Compilation finished with exit code 2

修正后:

func TestImplicit(t *testing.T) {
var a int = 1
var b int64
b = int64(a) t.Log(a, b)
}

输出

=== RUN   TestImplicit
--- PASS: TestImplicit (0.00s)
type_test.go:12: 1 1
PASS Process finished with exit code 0

别名和原有类型也不能进行隐式类型转换

func TestImplicit(t *testing.T) {
var a int = 1
var b int64
b = int64(a) var c MyInt
c = b
t.Log(a, b, c)
}

输出

# command-line-arguments_test [command-line-arguments.test]
./type_test.go:13:4: cannot use b (type int64) as type MyInt in assignment Compilation finished with exit code 2

修正后

func TestImplicit(t *testing.T) {
var a int = 1
var b int64
b = int64(a) var c MyInt
c = MyInt(b)
t.Log(a, b, c)
}

输出

=== RUN   TestImplicit
--- PASS: TestImplicit (0.00s)
type_test.go:14: 1 1 1
PASS Process finished with exit code 0

类型的预定义值

  1. math.MaxInt64 最大能表示的最大整型
  2. math.MaxFloat64 最大能表示的浮点型
  3. math.MaxUint32 最大能表示32位无符号整型

指针类型

  1. 不支持指针运算
  2. string是只类型,其默认的初始化值为空字符串,而不是nil

不支持指针运算

func TestPoint(t *testing.T) {
a := 1
aPtr := &a
aPtr = aPtr + 1
t.Log(a, aPtr)
t.Logf("%T %T", a, aPtr)
}

输出

# command-line-arguments_test [command-line-arguments.test]
./type_test.go:20:14: invalid operation: aPtr + 1 (mismatched types *int and int) Compilation finished with exit code 2

string是只类型,其默认的初始化值为空字符串,而不是nil

func TestString(t *testing.T)  {
var s string
t.Log("*"+s+"*")
t.Log(len(s))
if len(s)==0{
t.Log("这是一个空字符串")
}
}

输出

=== RUN   TestString
--- PASS: TestString (0.00s)
type_test.go:27: **
type_test.go:28: 0
type_test.go:30: 这是一个空字符串
PASS Process finished with exit code 0

go学习第三天、数据类型的更多相关文章

  1. COM学习(三)——数据类型

    上回书介绍了GUID.CLSID.IID和接口的概念.本回的重点是介绍 COM 中的数据类型.咋还不介绍组件程序的设计步骤呀?咳......别着急,别着急!孔子曰:"饭要一口一口地吃&quo ...

  2. Python学习笔记三:数据类型

    数据类型 整数int 32位机器,-2**31~2**31-1,即-2147483648~2147483647(4亿多) 64位机器,-2**63~2**63-1,非常大了. 长整型long 没有位数 ...

  3. JavaScript高级程序设计第三版学习笔记(一)之数据类型区分详谈

    null.NaN.undefined三者的区别是什么? 在初次接触到JavaScript的时候,傻傻的分不清null.NaN.undefined三者到底区别何在,在实际的项目开发中也因为这个问题而困惑 ...

  4. Oracle学习笔记三 SQL命令

    SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)  

  5. MyBatis学习 之 三、动态SQL语句

    目录(?)[-] 三动态SQL语句 selectKey 标签 if标签 if where 的条件判断 if set 的更新语句 if trim代替whereset标签 trim代替set choose ...

  6. java之jvm学习笔记三(Class文件检验器)

    java之jvm学习笔记三(Class文件检验器) 前面的学习我们知道了class文件被类装载器所装载,但是在装载class文件之前或之后,class文件实际上还需要被校验,这就是今天的学习主题,cl ...

  7. python学习第三次记录

    python学习第三次记录 python中常用的数据类型: 整数(int) ,字符串(str),布尔值(bool),列表(list),元组(tuple),字典(dict),集合(set). int.数 ...

  8. python学习日记(基础数据类型及其方法01)

    数字 int 主要是用于计算的,常用的方法有一种 #既十进制数值用二进制表示时,最少使用的位数i = 3#3的ASCII为:0000 0011,即两位 s = i.bit_length() print ...

  9. Typescript 学习笔记二:数据类型

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  10. Typescript 学习笔记三:函数

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

随机推荐

  1. pandas处理excel的常用方法技巧(上)

    1. 导库 import pandas as pd 2. 读取excel文件 这里要注意的就是第二个参数header如果不设置,pandas会默认把excel的第一行当作columns,header= ...

  2. map的线程安全问题

    为什么HashMap是线程不安全的 总说 HashMap 是线程不安全的,不安全的,不安全的,那么到底为什么它是线程不安全的呢?要回答这个问题就要先来简单了解一下 HashMap 源码中的使用的存储结 ...

  3. (Codeforce)Correct Solution?

    One cold winter evening Alice and her older brother Bob was sitting at home near the fireplace and g ...

  4. RAID5创建流程(3块做RAID,两块备份)

    https://www.cnblogs.com/meng-yu37/p/11739680.html(raid10链接) RAID5和RAID10 配置差不多,这里只指出不同的地方, 2. 使用mdad ...

  5. k8s 随记

    1.kubelet参数解析:https://blog.csdn.net/qq_34857250/article/details/84995381 2.如何在github中查找k8s代码关键字? 现在我 ...

  6. php使用QueryList轻松采集JavaScript动态渲染页面

    QueryList使用jQuery的方式来做采集,拥有丰富的插件. 下面来演示QueryList使用PhantomJS插件抓取JS动态创建的页面内容. 安装 使用Composer安装: 安装Query ...

  7. postgresql修改最大连接数配置

    1.查看配置文件位置等信息,用来确定配置对应的配置文件. select setting,boot_val,reset_val,sourcefile,*from pg_settings  where n ...

  8. OAuth 2.0 概念及授权流程梳理

    本文可以转载,但请注明出处https://www.cnblogs.com/hellxz/p/oauth2_process.html OAuth2 的概念 OAuth是一个关于授权的开放网络标准,OAu ...

  9. 使用FastReport报表工具实现信封套打功能

    在较早期的报表套打的时候,我倾向于使用LODOP的ActiveX进行报表的打印或者套打,BS效果还是很不错的.之前利用它在Winform程序里面实现信封套打功能,详细参考<基于信封套打以及批量打 ...

  10. Java基础面试题及答案(三)

    多线程 35. 并行和并发有什么区别? 并行是指两个或者多个事件在同一时刻发生:而并发是指两个或多个事件在同一时间间隔发生. 并行是在不同实体上的多个事件,并发是在同一实体上的多个事件. 在一台处理器 ...