GO入门(二) | 青训营笔记

71 阅读2分钟

续前

GO入门(一)

init函数和main函数

init函数

  1. init函数用于程序执行前做包的初始化,比如初始化包里的变量等。
  2. 每个包可以拥有多个init函数。
  3. 包的每个源文件也可以拥有多个init函数。
  4. init函数不能被其他函数调用,而是在main函数执行前自动被调用。

main函数

go程序必须包含package main,其包下的main函数有且仅有一个,是默认的程序入口。

import导入包

//导入的包必须被使用
import “fmt" //单独引入
import (     //批量引入
    "time"
    "runtime"
)

变量

变量声明

变量声明格式为:var 变量名 变量类型

var a int
var (        //批量声明
    b string
    c bool

变量初始化

变量初始化格式为:var 变量名 变量类型 = 值表达式

var name string = "xiaoming"
var gender, addr = "male", "Street One"  //一次初始化多个变量

类型推导

可以将变量的类型省略,编译器会根据等号右边的值来推导变量的类型完成初始化。

var name = "xiaoming"
var num = 1

短变量声明

在函数内部,可以使用更简略的 := 方式声明并初始化变量。

package main

import (
    "fmt"
)
// 全局变量m
var m = 100

func main() {
    n := 10
    m := 200 //声明局部变量m
    fmt.Println(m, n)
}

匿名变量

在使用多重赋值时,如果想要忽略某个值,可以使用匿名变量(anonymous variable)。 匿名变量用一个下划线_表示,例如:

func foo() (int, string) {
    return 10, "Q1mi"
}
func main() {
    x, _ := foo()
    _, y := foo()
    fmt.Println("x=", x)
    fmt.Println("y=", y)
}

匿名变量不占用命名空间,不会分配内存,所以匿名变量之间不存在重复声明。

注意事项:

  1. 函数外的每个语句都必须以关键字开始(var、const、func等)
  2. :=不能使用在函数外。
  3. _多用于占位,表示忽略值。

常量

常量的操作方式和变量类似,只是将var更换为const

const e = 2.7182
const (
    pi = 3.14159
    g = 9.8
)

结构体

类型名

自定义类型

//将long定义为int64类型
type long int64

类型别名

//TypeAlias是Type的别名,类型仍为Type
type TypeAlias = Type

结构体定义

结构体定义格式为:

    type 类型名 struct {
        字段名 字段类型
        字段名 字段类型
        …
    }

其中:

  1. 类型名:标识自定义结构体的名称,在同一个包内不能重复。
  2. 字段名:表示结构体字段名。结构体中的字段名必须唯一。
  3. 字段类型:表示结构体字段的具体类型。