您的位置:首页 > 编程语言 > Go语言

go语言编程学习二

2017-07-10 16:37 381 查看
go语言编程初学二

枚举

枚举之一系列相关的常量,比如一个星期中每天的定义

const (

Sunday = iota

Monday

Tuesday

Wednesday

Thursday

Friday

Saturday

numberofDays

)

同Go语言的其他符号一样,以大写字母开头的常量在包外可见,以上numberofDays为包内私有,其他的则可被其他包访问

类型

Go语言内置以下这些基础类型:

布尔类型: bool

整型: int8、byte、int16、int、uint、uintptr等

浮点型:float32、float64

复数类型: complex64、complex128

字符串:string

错误类型:error

此外,go语言也支持一下这些复合类型

指针 pointer

数组 array

切片 slice

字典 map

通道 chan

结构体 struct

接口 interface

布尔类型

var v1 bool

v1 = true

v2 := (1 == 2) //v2也会被推导为bool类型

布尔类型不能接受其他类型的赋值,不支持自动或强制的类型转换。实例

var b bool

b = 1 //编译错误

b = bool(1) //编译错误

以下的用法才是正确的:

var b bool

b = (1 != 0) //编译正确

fmt.Println("Result:", b) //打印结果为Result: ture

整型

类 型 长度(字节) 值 范 围
int8 1  -128 ~ 127
uint8(即byte) 1 0 ~ 255
int16 2  - 32 768 ~ 32 767
uint16 2 0 ~ 65 535
int32 4  -2 147 483 648 ~ 2 147 483 647
uint32 4 0 ~ 4 294 967 295
int64 8  -9 223 372 036 854 775 808 ~ 9 223 372 036 854 775 807
uint64 8 0 ~ 18 446 744 073 709 551 615
int 平台相关 平台相关
uint 平台相关 平台相关
uintptr 同指针 在32位平台下为4字节,64位平台下为8字节

需要注意的是int和int32 在go语言里被认为是两种不同的类型,编译器也不会帮你自动类型转换

var value2 int32

value1 := 64 //value1将会被自动推导为int类型

value2 = value1 //编译错误

错误类似

cannot use value1 (type int) as type int32 in assignment。

使用强制类型转化可以解决这个编译错误

value2 = int32(value1) // 编译通过

数值运算

go语言支持常规整数运算: + - * / %

% 和在C语言中一样是求余运算

5 % 2 //结果为2

比较运算

> < == >= <= !=

i, j := 1, 2

if i == j {

fmt.Println(" i and j are equal.")

}

两个不同类型的整型不能直接比较,比如int8类型的数和int类型的数不能直接比较

不过各种类型的整型变量都可以直接与字面常量进行比较

var i int32、

var j int64

i, j = 1, 2

if i == j { // 编译错误

fmt.Println(" i and j are equal. ")

}

if i == 1 || j == 2 { //编译通过

fmt.Println(" i and j are equal. ")

}

位运算

运 算 含 义 样 例
x << y 左移 124 << 2 // 结果为496
x >> y 右移 124 >> 2 // 结果为31
x ^ y 异或 124 ^ 2 // 结果为126
x & y 与 124 & 2 // 结果为0
x | y 或 124 | 2 // 结果为126
^x 取反 ^2 // 结果为.3

浮点型

浮点型用于表示包含小数点的数据,比如1.234就是一个浮点型数据

go语言定义了两个类型float32和float64, 其中float32等价于C语言的float类型

float64等价于C语言的double类型

var fvalue1 float32

fvalue1 = 12

fvalue2 := 12.0 //如果不加小数点,fvalue2会被推导为整型而不是浮点型

数组

数组是Go语言编程中最常用的数据结构之一,数组就是指一系列同一类型的集合

[32]byte // 长度为32的数组,每个元素为一个字节
[2*N] struct { x, y int32 } // 复杂类型数组
[1000]*float64 // 指针数组
[3][5]int // 二维数组
[2][2][2]float64 // 等同于[2]([2]([2]float64))
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: