Go语言学习之旅01——变量与数据

大道至简

Go语言(Golang)作为一门崇尚简洁的编程语言,主张使用20%的设计,解决80%的问题,他的全新设计思路,在如今21世纪非常值得我们去学习参考

它没有隐式数据类型转换,没有构造函数或者析构函数,没有运算符重载也没有继承、泛型、异常…但它却拥有垃圾搜集、一等函数、词法作用域以及channel等等

学习Go语言,就犹如打开编程语言世界的一扇新窗

数据类型

按类别

整体类型 描述
布尔型 布尔型的值只可以是常量 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)
浮点数&复数类型 描述
float32 IEEE-754 32位浮点型数
float64 IEEE-754 64位浮点型数,浮点数默认类型
complex64 32 位实数和虚数
complex128 64 位实数和虚数,复数默认类型
其他数字类型 描述
byte uint8别名,用来存放字符
rune 等价int32,存放Unicode编码
uint 32 或 64 位
int 与 uint 一样大小
uintptr 无符号整型,用于存放一个指针
1
2
3
4
复数回顾:
定义i = 根号下-1
复数:3 + 4i
i平方 = -1 i三次方 = -i i四次方 = 1...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package main

import (
"math"
"fmt"
)

func main() {
// 强制类型转换,Go语言没有隐式类型转换
var a, b int = 3, 4
var c int
// c = math.Sqrt(a * a + b * b) // 返回平方根
c = int(math.Sqrt(float64(a*a + b*b))) // 强制类型转换
fmt.Println(c)
}

变量定义

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
func variable() {
// 定义变量,注意,变量名在前,类型在后
var a int
var s string
fmt.Println(a, s) // 打印Go语言变量的初值
fmt.Printf("%d, %q\n", a, s) // quotation,字符串打印引号
}

func variableTypeDeduction() {
// 自动推断类型
var s = "abcd"
var a, b, c = 1, true, "hello" // 定义多个变量,即使不是同一类型
fmt.Println(s, a, b, c)
}

func variableShorter() {
a, b, c := 1, true, "hello" // 定义变量,不使用var关键字(在函数外面定义变量不可以简写)
fmt.Println(a, b, c)
}


func variableInit() {
// 定义变量并赋初值
var a int = 3
var b, c int = 4, 5 // 同时定义多个变量,Go定义变量必须要被使用到
var s string = "abc"
fmt.Println(a, b, c, s)
}

func main() {
variable() // 定义变量
variableTypeDeduction() // 自动推断类型
variableShorter() // 自动推断类型 简写(函数外的包变量不可以简写)
variableInit() // 定义变量并赋初值
}

补充:Go定义变量必须要被使用到,如不需要使用,使用下划线_接收

补充:Go在调用函数的时候,如果需要省略包名,使用下点.接收