Go基础语法

Go
This entry is part 1 of 3 in the series Go(Golang)学习之路

1. 变量定义方法

1.1 var定义变量

  • var  变量名  类型  =  表达式

var name string = “suifengerzai”

var age int = 18

var isOk bool bool

1.2 类型推导方式定义变量

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

  • 短变量只能用于声明局部变量,不能用于全局变量的声明;

  • 变量名  :=  表达式

n  :=  18

var  age  =  18

1.3 一次定义多个变量

package main
import “fmt”
func main() {
        var username, sex string
        username = “张三”
        sex = “男”
        fmt.Println(username, sex)
}

1.4 批量声明变量

package main
import “fmt”
func main() {
        var (
                a string
                b int
                c bool
        )
        a = “张三”
        b = 18
        c = true
        fmt.Println(a,b,c)
}

2. 常量定义

  • 声明了 pi 和 e 这两个常量之后,在整个程序运行期间它们的值都不能再发生变化。

const pi = 3.1415

const e = 2.7182

//多个常量也可以一起声明

const (

        pi = 3.1415

        e = 2.7182

)

  • const同时声明多个常量时,如果省略了值,则表示和上面一行的值相同。

const (
        n1 = 18
        n2
        n3
)
// 上面示例中,常量 n1、n2、n3 的值都是 18

3. fmt包

Println:

  • 一次输入多个值的时候,Println中间有空格
  • Println会自动换行,Print不会            

Print:

  • 一次输入多个值的时候,Print中间没有空格
  • Print不会自动换行

Printf:

  • Printf是格式化输出,在很多场景下比Println更方便

package main
import “fmt”
func main() {
        fmt.Print(“zhangsan”,”lisi”,”wangwu”)      //zhangsanlisiwangwu
        fmt.Println(“zhangsan”,”lisi”,”wangwu”)   // zhangsan lisi wangwu
        name := “zhangsan”
        age := 18
        fmt.Printf(“%s 今年 %d 岁”, name, age)   // zhangsan 今年 18 岁
}

4. init函数和main函数

4.1 init函数

  • go语言中,init函数用于包(package)的初始化,该函数是go语言的一个重要特性,有如下特征:
  1. init函数是用于程序执行前做包的初始化的函数,比如,初始化包里的变量等;
  2. 每个包可以拥有多个init函数;
  3. 包的每个源文件也可以拥有多个init函数;
  4. 同一个包中,多个init函数的执行顺序,go语言没有明确的说明;
  5. 不同包的init函数按照包导入的依赖关系决定该初始化函数的执行顺序;
  6. init函数不能被其他函数调用,而是在main函数执行之前自动被调用。

4.2 main函数

Go语言程序的默认入口函数(主函数):func main()

函数体用 {} 一对括号包裹

func main{
        //函数体
}

4.3 init函数和main函数的异同

4.3.1 相同点

两个函数在定义时不能有任何的参数和返回值,且Go程序自动调用。

4.3.2 不同点

① init可以应用于任意包中,且可以重复定义多个;

② main函数只能用于main包中,且只能定义一个。

4.3.3 两个函数的执行顺序

① 对同一个go文件的init()调用顺序是从上到下的;

② 对于同一个package中不同文件是按文件名字字符串比较“从小到大”顺序调用各文件中的init()函数;

③ 对于不同的package,如果不互相依赖的话,按照main包中的“先import的后调用”的顺序调用其包中的init();

④ 如果package存在依赖,则先调用最早被依赖的package中的init(),最后调用main函数;

⑤ 如果init函数中使用了println()或者print(),会发现在执行过程中,这两个不会按照我们想象中顺序执行。

这两个函数,官方只推荐在测试环境中使用,对于正式环境不要使用。

5. init()函数介绍

  • 在Go语言程序执行时,导入包语句会自动触发包内部init()函数的调用;
  • 需要注意:init()函数没有参数也没有返回值;
  • init()函数在程序运行时,自动被调用执行,不能在代码中主动调用它。

6. golang中关键字

  • var和const:变量和常量的声明
  • package and import:导入
  • func:用于定义函数和方法
  • return:用于从函数返回
  • defer someCode:在函数退出之前执行
  • go:用于并行
  • select:用于选择不同类型的通讯
  • interface:用于定义抽象数据类型
  • break、case、continue、for、fallthrough、else、if、switch、goto、default:流程控制
  • chan:用于channel通讯
  • type:用于声明自定义类型
  • map:用于声明map类型数据
  • range:用于读取slice、map、channel数据
Series NavigationGo基本数据类型 >>

Related Posts

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注