Go 语言学习笔记 -第2章 程序结构

栏目: IT技术 · 发布时间: 6年前

内容简介:[toc]首字母大写的一般是public方法,首字母小写不能直接调用使用驼峰式的风格

Go 语言学习笔记 -第2章

[toc]

程序结构

名称

首字母大写的一般是public方法,首字母小写不能直接调用

使用驼峰式的风格

声明

每一个文件都是以package声明开头,表明文件是属于哪个包

有且只有一个main包

变量

1.变量是程序的基本组成单位

变量相当于内存中一个数据储存空间的表示

你可以把变量看做一个房间的门牌号

通过门牌号我们可以找到房间

同样的道理,通过变量名可以访问到变量值

2.变量使用的基本步骤:

1、声明变量(定义变量)

2、赋值

3、使用

3.变量使用注意事项:

1、 变量表示内存中的一个存储区域,该区域有自己的名称(变量名)和类型(数据类型)

2、 Go 变量使用三种方式

1)指定变量类型,声明后若不赋值使用默认值

2)根据值自行判定变量类型

3)省略var, 注意 := 左侧的变量不应该是已经声明过的 否则会导致编译错误

3、多变量声明

一次性声明多个变量

package main

import "fmt"

//全局变量
var n1 = 100
var n2 = 200
var name = "jack"

//上面声明方式也可以改成一次性声明
var (
    n3    = 300
    n4    = 900
    name2 = "mary"
)

func main() {
    //指定变量类型,声明后若不赋值使用默认值
    //int默认值为0
    // var i int

    // fmt.Println("i=", i)

    //根据值自行判定变量类型
    // var num = 10.11
    // fmt.Println("num=", num)

    //省略var
    // name := "tom"
    // fmt.Println("name=", name)

    //多变量声明
    // var n1, n2, n3 int
    // fmt.Println("n1=", n1, "n2=", n2, "n3=", n3)

    // var n1, name, n3 = 100, "tom", 888
    // fmt.Println("n1=", n1, "name=", name, "n3=", n3)

    // n1, name, n3 := 100, "tom", 888
    // fmt.Println("n1=", n1, "name=", name, "n3=", n3)
    fmt.Println("n1=", n1, "name=", name, "n2=", n2)
    fmt.Println("n3=", n3, "name2=", name2, "n4=", n4)
}

4、该区域的数据值可以在同一个类型范围内不断变化

5、变量在同一个作用域(一个函数或者代码块)内不能重名

6、变量=变量名+值+数据类型

7、变量如果没有赋值,编译器会使用默认值

int 默认值是0

string 默认值是空串

8、 := 结构不能使用在函数外。

9、也可以使用new来创建变量

package main

import "fmt"

func main() {
    p := new(int)
    fmt.Println("p addr =", p)
    fmt.Println("p value=", *p)
}

运行结果:

p addr = 0xc0000120b8
p value= 0

关于数值例子:

package main

import "fmt"

func main() {
    //该区域的数据值可以在同一个类型范围内不断变化
    var i int = 10
    i = 20
    i = 50
    //i = 1.2

    fmt.Println("i=", i)

    //变量在同一个作用域(一个函数或者代码块)内不能重名
    //var i int = 59
    // i := 99

    
}

变量的生命周期

栈空间

堆空间

如何判断变量是在栈空间还是在堆空间?

垃圾回收器 gc

-待补充

变量作用域

1.函数内部声明/定义的变量 叫局部变量,作用域仅限于函数内部

例子:

package main

import (
    "fmt"
)

func test() {
    //age和Name的作用域只在test函数内部
    age := 10
    Name := "tome"
}

func main() {
    fmt.Println("age=", age) //undefined
}

2.函数外部声明/定义的变量 叫全局变量

作用域在整个包都有效,如果 其首字母为大写 ,则作用域在整个程序有效

utils/utils.go

package utils

var age int = 50
var Name string = "jack"

main.go

package main

import (
    "fmt"
)

var age int = 50
var Name string = "jack"

func test() {
    //age和Name的作用域只在test函数内部
    age := 10
    Name := "tom"
    fmt.Println("age=", age)   //10
    fmt.Println("Name=", Name) //tom
}

func main() {
    // fmt.Println("age=", age) //50
    // fmt.Println("Name=", Name) //jack
    // test()

    fmt.Println("age=", utils.age)
    fmt.Println("Name=", utils.Name)
}

以上所述就是小编给大家介绍的《Go 语言学习笔记 -第2章 程序结构》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Mathematica Cookbook

Mathematica Cookbook

Sal Mangano / O'Reilly Media / 2009 / GBP 51.99

As the leading software application for symbolic mathematics, Mathematica is standard in many environments that rely on math, such as science, engineering, financial analysis, software development, an......一起来看看 《Mathematica Cookbook》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换