基本数据类型

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. SpringBoot之微服务日志链路追踪

    SpringBoot之微服务日志链路追踪 简介 在微服务里,业务出现问题或者程序出的任何问题,都少不了查看日志,一般我们使用 ELK 相关的日志收集工具,服务多的情况下,业务问题也是有些难以排查,只能 ...

  2. java中继承,子类是否继承父类的构造函数

    java中继承,子类是否继承父类的构造函数 java继承中子类是不会继承父类的构造函数的,只是必须调用(隐式或者显式) 下面来看例子: public class TestExtends { publi ...

  3. PHP 教你使用 Swoole-Tracker 秒级定位 PHP 卡死问题

    PHPer 肯定收到过这样的投诉:小菊花一直在转!你们网站怎么这么卡!当我们线上业务遇到这种卡住(阻塞)的情况,大部分 PHPer 会两眼一抹黑,随后想起那句名言:性能瓶颈都在数据库然后把锅甩给DBA ...

  4. Java自动生成数据

    最近在造数据库中的表数据,写了些数据生成类 可以随机生成姓名.性别,民族,出生日期,身份证号,手机号,邮箱,身高,文化程度,地址,单位,日期时间,编码等 package com.util.create ...

  5. Centos下的MySQL安装及配置

    里使用的是VMware虚拟机和Centos7系统 虚拟机安装这里不多讲,网上教程很多了,这里就介绍下虚拟机的网络配置. 虚拟机网络配置 Centos网络连接模式这里设置为桥接模式,不用勾选复制物理网络 ...

  6. vue中自定义html文件的模板

    如果默认生成的 HTML 文件不适合需求,可以创建/使用自定义模板. 一是通过 inject 选项,然后传递给定制的 HTML 文件.html-webpack-plugin 将会自动注入所有需要的 C ...

  7. Mysql 添加字段 修改字段 删除字段

    1.添加字段(alter.add) mysql> alter table users add name varchar(30) not null after id; 2.修改字段(alter.m ...

  8. 性能测试——记XX银行电票系统上线后宕机问题诊断优化

    四月份我们公司负责的电票系统上线了,这个系统上线比客户方其他系统上线还特殊,是二期改造项目,旧系统数据还要整合抽取到新系统中继续使用,而且该系统不是增量型方式开发上线的,而且全部开发完后全国上线的,这 ...

  9. css 给div添加滚动并隐藏滚动条

    在html中 <div class="box"> <div>下面内容会单独滚动</div> <div class="scroll ...

  10. 2019-11-19:xxe漏洞利用,笔记

    xxe,也就是xml,外部实体注入攻击,漏洞是对非安全的外部实体数据进行处理时引发的安全问题,要了解xxe,就必须懂得xml的一些规则xml是用于标记电子文件使其具有结构性的标记语言,可以用来标记数据 ...