第1章 起步
1.4.1 使用go run编译并运行程序
go run main.go
在开发go代码时,go run提供了一种便利的方式编译并运行程序。
第2章 理解类型
go是一种静态类型语言
2.2 区分静态类型和动态类型
在go中,程序员可显式地声明类型,也可以让编译器推断类型。
2.3 使用布尔类型
可以像下面这样声明布尔类型
var b bool
如果没有给布尔变量赋值,它将默认为false。
2.4 理解数据类型
2.4.1 带符号整数和无符号整数
在go语言中,声明整型的方式如下:
var i int = 3
2.4.2 浮点数
go语言中的浮点数可以是32闰的,也可以是64位的。
var f float32 = 0.419
2.4.3 字符串
var s string = "ball"
要想对看起来像数字的字符串执行数学运算,必须先将其转换为数字类型。
2.4.4 数组
var books [4]string
books[0] = "the sun"
2.5 检查变量的类型
标准库中的reflect包能让您访问变量的底层类型。
package main
import (
"fmt"
"reflect"
)
func main() {
var s string = "haha"
var f float64 = 4.19303
fmt.Println(reflect.TypeOf(s));
fmt.Println(reflect.TypeOf(f));
}
输出结果
string
float64
2.6 类型转换
strconv包提供了一整套类型转换方法,可用于转换为字符串或将字符串转换为其他类型。
package main
import (
"fmt"
"reflect"
"strconv"
)
func main() {
var s string = ""
s = strconv.FormatBool(true);
fmt.Println(s);
fmt.Println(reflect.TypeOf(s));
}
第3章 理解变量
3.1 变量是什么
Go是一种静态类型语言,因此声明变量时必须显式或隐式地指定其类型。
//显示
var book string = "go"
//隐式
var say = "hello"
//错误
var err
3.2 快捷变量声明
var s, t string = "y", "x"
var (
s string = "y"
i int = 7
)
3.3 理解变量和零值
在Go语言中,声明变量时如果没有给它指定值,则变量将为默认值,这种默认值被称为零值。
常见变量的零值如下:
int 0
float 0
bool false
string ""
3.4 编写简短变量声明
使用简短变量声明时,编译器会推断变量的类型,因此您无须显式地指定变量的类型。请注意,只能在函数中使用简短变量声明。
s := "hello world"
3.5 变量声明方式
下面列出了所有的变量声明方式。
var s string = "hello"
var c = "hello"
var t string
t = "hello"
u := "hello"
3.6 理解变量作用域
- 在Go语言中,一对大括号({})表示一个块。
- 对于在大括号({})内声明的变量,可在相应块的任何地方访问。
- 大括号内的大括号定义了一个新块——内部块。
- 在内部块中,可访问外部块中声明的变量。
- 在外部块中,不能访问在内部块中声明的变量。
简而言之,每个内部块都可访问其外部块,但外部块不能访问内部块。
3.7 使用指针
要获取变量在计算机内存中的地址,可在变量名前加上&字符。
package main
import (
"fmt"
)
func main() {
s := "hello"
fmt.Println(&s)
}
运行结果:0xc000080030
指针是Go语言中的一种类型,指向变量所在的内存单元。
- 要声明指针,可在变量名前加上星号字符。
- 如果要使用指针指向的变量的值,可在指针变量前加上星号。
package main
import (
"fmt"
)
func main() {
s := "hello world"
var c *string = &s;
fmt.Println(*c, c, &s);
}
输出
hello world 0xc00000e1e0 0xc00000e1e0
- c为指向s的指针。从输出可以看出c与&s一致
- *c即为指针指向的内容“hello world”
3.8 声明常量
常量指的是在整个程序生命周期内都不变的值。常量初始化后,可以引用它,但不能修改它。
const greeting string = "how are you"
网友评论