分享
  1. 首页
  2. 文章

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

Mark110 · · 1441 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

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)
}

有疑问加站长微信联系(非本文作者)

本文来自:Segmentfault

感谢作者:Mark110

查看原文:Go 语言学习笔记 -第2章 程序结构

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
1441 次点击
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏