go 基础结构和类型

go 语言入门学习

go 语言变量

变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念。
变量可以通过变量名访问。
Go 语言变量名由字母、数字、下划线组成,其中首个字符不能为数字。
声明变量的一般形式是使用 var 关键字
eg:
单一变量声明
var identity type

也可以同时声明多个变量
var identity1,indentity2 type

若未初始化值,则默认该类型零值
var num int  // num 的值为0

自行判断值类型
var num = 1
num := 1

空标识符_
_ 实际上是一个只写变量,你不能得到它的值。
空白标识符 _ 也被用于抛弃值,如值 5 在:_, b = 5, 7 中被抛弃。
这样做是因为 Go 语言中你必须使用所有被声明的变量。
但有时你并不需要使用从一个函数得到的所有返回值。

go语言常量

常量是一个简单值的标识符,在程序运行时,不会被修改的量。
常量的定义格式:
显式定义 : const identifier [type] = value
隐式定义 : const identifier = value

iota,特殊常量,可以认为是一个可以被编译器修改的常量。

iota 在const关键字出现时将被重置为0(const内部的第一行之前),
const 中每新增一行常量声明将使iota计数一次(iota可理解为const语句块中的行索引)。
测试使用iota如下
func main() {
    const (
            a = iota   //0
            b          //1
            c          //2
            d = "ha"   //独立值,iota += 1
            e          //"ha"   iota += 1
            f = 100    //iota +=1
            g          //100  iota +=1
            h = iota   //7,恢复计数
            i          //8
    )
    fmt.Println(a,b,c,d,e,f,g,h,i)
}
结果:0 1 2 ha ha 100 100 7 8

高阶一点的例子:
const (
    i=1<<iota
    j=3<<iota
    k
    l
)

func main() {
    fmt.Println("i=",i)
    fmt.Println("j=",j)
    fmt.Println("k=",k)
    fmt.Println("l=",l)
}
结果:
i= 1
j= 6
k= 12
l= 24

首先 <<iota 先不管。在定义常量组时,如果不提供初始值,则表示将使用上行的表达式。
所以初始值是不是j=k=l=3。然后<<是左移的意思。所以他们的二进制值如下!!
i = 1 
j = 110
k = 1100
l = 11000

基础数据类型

类型|描述

  • 布尔型 布尔型的值只可以是常量 true 或者 false。一个简单的例子:var b bool = true
    数字类型 整型 int 和浮点型 float32、float64,Go 语言支持整型和浮点型数字,并且支持复数,其中位的运算采用补码。
    字符串类型 字符串就是一串固定长度的字符连接起来的字符序列。Go 的字符串是由单个字节连接起来的。Go 语言的字符串的字节使用 UTF-8 编码标识 Unicode 文本。
    派生类型 (a) 指针类型(Pointer)(b) 数组类型(c) 结构化类型(struct)(d) Channel 类型(e) 函数类型(f) 切片类型(g) 接口类型(interface)(h) Map 类型

数字类型

类型|描述

  • uint8 无符号 8 位整型 (0 到 255)
    uint16 无符号 16 位整型 (0 到 65535)
    uint32 无符号 32 位整型 (0 到 4294967295)
    uint64 无符号 64 位整型 (0 到 18446744073709551615)
    int8 有符号 8 位整型 (-128 到 127)
    int16 有符号 16 位整型 (-32768 到 32767)
    int32 有符号 32 位整型 (-2147483648 到 2147483647)
    int64 有符号 64 位整型 (-9223372036854775808 到 9223372036854775807)
Life is more than the present.