读书频道 > web开发 > 其他综合 > Go Web编程
内置基础类型
2013-05-18 08:22:01     我来说两句 
收藏    我要投稿   

本文所属图书 > Go Web编程

本书介绍如何用Go语言进行Web应用的开发,将Go语言的特性与Web开发实战组合到一起,帮读者成功地构建跨平台的应用程序,节省Go语言开发Web的宝贵时间。有了这些针对真实问题的解决方案放在手边,大多数编程难题都...  立即去当当网订购

Boolean

在Go语言中,布尔值的类型为bool,值是true或false,默认为false。

//示例代码

var isActive bool  // 全局变量声明

var enabled, disabled = true, false  // 忽略类型的声明

func test() {

    var available bool  // 一般声明

    valid := false      // 简短声明

    available = true    // 赋值操作

}

数值类型

整数类型有无符号和带符号两种。Go语言同时支持int和uint,这两种类型的长度相同,但具体长度取决于不同编译器的实现。当前的gcc和gccgo编译器在32位和64位平台上都使用32位来表示int和uint,但未来在64位平台上可能增加到64位。Go语言里面也有直接定义好位数的类型:rune,int8,int16,int32,int64和byte,uint8,uint16,uint32,uint64。其中rune是int32的别称,byte是uint8的别称。

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

例如,以下代码会产生错误。

var a int8

var b int32

c:=a + b

另外,尽管int的长度是32 bit,但int与int32并不可以互用。

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

这就是全部吗?不止,Go语言还支持复数。它的默认类型是complex128(64位实数+64位虚数)。如果需要小一些的,也有complex64(32位实数+32位虚数)。复数的形式为RE + IMi,其中RE是实数部分,IM是虚数部分,而最后的i是虚数单位。下面是一个使用复数的例子。

var c complex64 = 5+5i

//output: (5+5i)

fmt.Printf("Value is: %v", c)

字符串

我们在上一节中讲过,Go语言中的字符串都是采用UTF-8字符集编码。字符串是用一对双引号("")或反引号(` `)括起来定义,它的类型是string。

//示例代码

var frenchHello string  // 声明变量为字符串的一般方法

var emptyString string = ""  // 声明了一个字符串变量,初始化为空字符串

func test() {

    no, yes, maybe := "no", "yes", "maybe"  // 简短声明,同时声明多个变量

    japaneseHello := "Ohaiou"  // 同上

    frenchHello = "Bonjour"  // 常规赋值

}

在Go语言中字符串是不可变的,例如,以下代码编译时会报错。

var s string = "hello"

s[0] = 'c'

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

s := "hello"

c := []byte(s)  // 将字符串 s 转换为 []byte 类型

c[0] = 'c'

s2 := string(c)  // 再转换回 string 类型

fmt.Printf("%s\n", s2)

Go语言中可以使用“+”操作符来连接两个字符串。

s := "hello,"

m := " world"

a := s + m

fmt.Printf("%s\n", a)

修改字符串也可写为

s := "hello"

s = "c" + s[1:] // 字符串虽不能更改,但可进行切片操作

fmt.Printf("%s\n", s)

如果要声明一个多行的字符串怎么办?可以通过“`”来声明。

m := `hello

    world`

“`”括起的字符串为Raw字符串,即字符串在代码中的形式就是打印时的形式,它没有字符转义,换行也将原样输出。

错误类型

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

err := errors.New("emit macho dwarf: elf header corrupted")

if err != nil {

    fmt.Print(err)

}

Go语言数据底层的存储

图2.1来源于Russ Cox Blog(http://research.swtch.com/godata)中一篇介绍Go语言数据结构的文章,大家可以看到这些基础类型底层都是分配了一块内存,然后存储了相应的值。
 

2.1  Go语言数据格式的存储

点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:常量
下一篇:一些技巧
相关文章
图文推荐
3.2 Windows 7设置
3.1 DNS解析
2.3 HTTP协议
2.2 TCP/IP协议与So
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站