内容简介:[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章 程序结构》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- GO语言学习笔记(四)GO语言控制语句
- GO语言学习笔记(一)Go语言的初步了解
- GO语言学习笔记(五)GO语言函数的简易计算
- 【Go语言学习】Linux下Go语言的安装与设置
- Go语言学习笔记02--go语言运算符与流程控制分支语句
- go语言学习
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
深度探索C++对象模型(影印版)
Stanley B. Lippman / 中国电力出版社 / 2003-8-1 / 42.00
本书重点介绍了C++面向对象程序设计的底层机制,包括结构式语意、暂时性对象的生成、封装、继承和虚拟——虚拟函数和虚拟继承。书中向你表明:理解底层实现模型,可以极大地提高你的编码效率。Lippman澄清了那些关于C++系统开销与复杂性的各种错误信息和猜测,指出了其中某些成本和利益交换确实存在。他在书中详述了各种实现模型,指出了它们的发展方向以及促使其发展的根本原因。本书涵盖了C++对象模型的语意暗示......一起来看看 《深度探索C++对象模型(影印版)》 这本书的介绍吧!