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

One thought on “Go基础语法

  1. I would like to thank you for the efforts you have put in writing this website. I am hoping the same high-grade blog post from you in the upcoming also. In fact your creative writing skills has encouraged me to get my own web site now. Actually the blogging is spreading its wings rapidly. Your write up is a good example of it.

回复 tlover tonet 取消回复

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