继续来学习go顺序编程3

3. 类型
Go语言内置以下这些基础类型:
     布尔类型: bool 。

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

     浮点类型: float32 、 float64 。

     复数类型: complex64 、 complex128 。

    字符串: string 。

    字符类型: rune 。

    错误类型: error 。
 此外,Go语言也支持以下这些复合类型:
        指针(pointer)
        数组(array)
        切片(slice)
        字典(map)
        通道(chan)
        结构体(struct)
       接口(interface)
关于错误类型,通道结构体和接口学习的书上后面有介绍,现在不懂;
在这些基础类型之上Go还封装了下面这几种类型: int 、 uint 和 uintptr 等。这些类型的
特点在于使用方便,但使用者不能对这些类型的长度做任何假设。对于常规的开发来说,用 int
和 uint 就可以了,没必要用 int8 之类明确指定长度的类型,以免导致移植困难。

3.1 布尔类型
  Go语言中的布尔类型与其他语言基本一致,关键字也为 bool ,可赋值为预定义的 true 和false 示例代码如下:
           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: true
3.2 整型
整型是所有编程语言里最基础的数据类型。Go语言支持表3-1所示的这些整型类型。

  继续来学习go顺序编程3_第1张图片

3.2.1. 类型表示
需要注意的是, 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) // 编译通过
当然,在做强制类型转换时,需要注意数据长度被截短而发生的数据精度损失(比如
将浮点数强制转为整数)和值溢出(值超过转换的目标类型的值范围时)问题。
3.2.2. 数值运算
    Go语言支持下面的常规整数运算:+、 - 、*、/和%。加减乘除就不详细解释了,需要说下的

    是,% 和在C语言中一样是求余运算,例如:
                       5 % 3 // 结果为:2
3.2.3. 比较运算
         Go语言支持以下的几种比较运算符: > 、 < 、 == 、 >= 、 <= 和 != 。这一点与大多数其他语言相
           同,与C语言完全一致。下面为条件判断语句的例子:
                       i, j := 1, 2
                       if i == j {
                      fmt.Println("i and j are equal.")
                       }

两个不同类型的整型数不能直接比较,比如 int8 类型的数和 int 类型的数不能直接比较,但
各种类型的整型变量都可以直接与字面常量(literal)进行比较,比如:
                      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.")
                }

3.2.4. 位运算
Go语言支持表3-2所示的位运算符。

继续来学习go顺序编程3_第2张图片

Go语言的大多数位运算符与C语言都比较类似,除了取反在C语言写法中是 ~x ,而在Go语言中是 ^x 。

好了,今天就抽空学习了类型,类型中的布尔类型和整型。Go中的类型还是跟C中有些不一样,但总体的思想差不多,有的写法不一样而已。嗯接下来有时间继续学习。GO,Go,Go!



你可能感兴趣的:(继续来学习go顺序编程3)