【GoLang】2.1 类型

常见类型

  学习到了go的类型,我第一印象是go的类型怎么这么多?光整数就有13种。所以尽量就分类总结下:

大类小类
intint int8 int16 int32 rune int64
unituint uintptr uint8 byte uint16 uint32 uint64
floatfloat32 float64
complexcomplex64 complex128
boolbool
stringstring
errorerror

  常见类型就是7种,其中int和uint以及uintptr是机器相关的,不同位数的机器长度不一样。byte就是unit8, rune就是int32。

类型定义

  C语言有#typedef预编译指令用于给类型取别名,go也保留了这个语法。我迫不及待要试一试了,话说目前这些语言中,我最爱go。在编程语言这方面,我比较喜新厌旧,说不定未来我又喜欢上一门新的语言了。好了,闲话不说了,试试类型别名,不过Go的规范是类型名首字母要大写:

package main

import "fmt"

type Natural rune

func main() {
	var x Natural = 19
	fmt.Println(x * x * x)
}

  运行一下:

PS F:\learn\go\demo3> go build .\natural.go
PS F:\learn\go\demo3> .\natural.exe
6859

  但是这个类型声明有个陷阱,其实本质上不是别名,而是不同类型了。我举个例子:

package main

import "fmt"

type Natural rune
type Integer rune

func main() {
	var x Natural = 19
	var y Integer = 19
	fmt.Println(x == y)
}

  这段代码是会编译报错的,报错信息如下:

.\types.go:11:19: invalid operation: x == y (mismatched types Natural and Integer)

  这两个东西,不再是rune了。不过也不要灰心,转一下类型就可以了,如下:

package main

import "fmt"

type Natural rune
type Integer rune

func main() {
	var x Natural = 19
	var y Integer = 19
	fmt.Println(x == Natural(y))
}

结构体

  除了上述的方式外,还可以定义结构体。回想C语言,除了结构体还有共用体之类的。C语言的共用体,说实话,我学过,但是从来没用过,所以go语言没有共同体,我觉得是合理的,不实用的语法是应该剔除。对于知识,我都是迫不及待尝鲜,马上写代码:

package main

import "fmt"

type Book struct {
	name  string
	isbn  string
	price float32
}

func main() {
	var book Book
	book.price = 91.1
	book.name = "王者荣耀上分秘籍"
	book.isbn = "123456"
	fmt.Println(book)
}

  结果是自动格式化输出啊,这点不比java和python舒服?

{王者荣耀上分秘籍 123456 91.1}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

醒过来摸鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值