《Go语言入门经典》1~3章读书笔记

第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"

你可能感兴趣的:(go)