基础类型

布尔值

布尔值的类型为bool,值是true或false,默认为false。

//示例代码
var isActive bool // 全局变量声明
var enabled, disabled = true, false // 忽略类型的声明
func testBool() {
var available bool // 一般声明
valid := false // 简短声明
available = true // 赋值操作
}

数值类型

整数类型有无符号和带符号两种。Go同时支持int和uint,这两种类型的长度相同,但具体长度取决于不同编译器的实现。Go里面也有直接定义好位数的类型:rune, int8, int16, int32, int64和byte, uint8, uint16, uint32, uint64。其中rune是int32的别称,byte是uint8的别称。

需要注意的一点是,这些类型的变量之间不允许互相赋值或操作,不然会在编译时引起编译器报错。

var a int8 = 1

浮点数的类型有float32和float64两种,默认是float64。

var b float32 = 4.67890

Go还支持复数。它的默认类型是complex128(64位实数+64位虚数)。如果需要小一些的,也有complex64(32位实数+32位虚数)。复数的形式为RE + IMi,其中RE是实数部分,IM是虚数部分,而最后的i是虚数单位。

var c complex64 = 5+5i

字符串

字符串是用一对双引号("")或反引号(``)括起来定义,反引号括起的字符串为Raw字符串,它的类型是string。

//示例代码
var frenchHello string // 声明变量为字符串的一般方法
var emptyString string = "" // 声明了一个字符串变量,初始化为空字符串
func testString() {
a := "abc"
b := `demo <>`
}

字符串是不可变的,例如下面的代码编译时会报错:cannot assign to s[0]

var s string = "hello"
s[0] = 'c'

但如果真的想要修改怎么办呢?下面的代码可以实现:

s := "hello"
c := []byte(s) // 将字符串 s 转换为 []byte 类型
c[0] = 'c'
s2 := string(c) // 再转换回 string 类型

可以使用+操作符来连接两个字符串:

s := "hello,"
m := " world"
a := s + m

错误类型

Go内置有一个error类型,专门用来处理错误信息,Go的package里面还专门有一个包errors来处理错误:

func testError() {
err := errors.New("fatal error")
fmt.Println(err)
}

零值

关于“零值”,所指并非是空值,而是一种“变量未填充前”的默认值,通常为0。 此处罗列 部分类型 的 “零值”

int     0
int8 0
int32 0
int64 0
uint 0x0
rune 0 //rune的实际类型是 int32
byte 0x0 // byte的实际类型是 uint8
float32 0 //长度为 4 byte
float64 0 //长度为 8 byte
bool false
string ""

最新文章

  1. Java c3p0连接池之二
  2. session跨域和ajax跨域名
  3. JavaScript日期对象使用总结
  4. BZOJ4388 : JOI2012 invitation
  5. Mybatis-Plugin插件学习使用方法
  6. Windows原生MPIO存储多路径软件详解与应用
  7. extern 修饰符
  8. CSS+DIV布局应用(2015年06月10日)
  9. [Papers]NSE, $\pi$, Lorentz space [Suzuki, NA, 2012]
  10. JavaScript学习笔记(13)——BOM
  11. Thread Runnable 多线程
  12. HTTP协议是无状态协议,怎么理解
  13. Python 异常处理
  14. 如何用kaldi做孤立词识别-初版
  15. 房上的猫:HTML5基础
  16. IOS 与ANDROID框架及应用开发模式对比一
  17. 产品经理之PRD详解
  18. 使用 PHP SOAP 来创建一个简单的 Web Service。
  19. Vue2全家桶之一:vue-cli(vue脚手架)超详细教程
  20. 测试工具安装(JMeter,Postman)

热门文章

  1. jmeter中CSV Data Set Config各项说明
  2. vmware克隆的linux机器网络不通
  3. msysGit删除github文件
  4. expdp/impdp使用sysdba权限迁移数据
  5. C#转Java之路之三:多线程并发容器即线程安全的容器
  6. http中COOKIE和SESSION有什么区别?(转知乎)
  7. POJ 3020 Antenna Placement 【最小边覆盖】
  8. [18/11/7] Java的基础概念
  9. 2018.11.20 Struts2中对结果处理方式分析&amp;struts2内置的方式底层源码剖析
  10. mybatis学习记录三——SqlMapConfig.xml相关参数详解