GO语言和其它语言一样,都是从小的组件构建而来的,由变量、表达式、基本类型来构成的
1、可访问性
一个声明实体如果在函数的外部,那么它对整个包可见。实体的第一个字母的大小写决定其是否挎包可见。如果第一个字母小写,那么包外不可见,如果第一个字母大写,那么是包外可见的。在GO语言中一般使用“驼峰式”命名的风格。下面我们写一些代码来验证下包的可见性问题。
这里创建三个go文件,main.go、test.go和uitl包下面的util.go。文件结构如下图:
util.go中代码,在util包中我们声明了两个方法,分别是以大写字母开头的Util1和小写字母开头的util2和两个包级变量PI和str
package util
import (
"fmt"
"math"
)
var PI float64 = math.Pi
var str string = "str"
func Util1() {
fmt.Println("i am Util1!")
}
func util2() {
fmt.Println("i am util2!")
}
test.go,在test中我们定义了两个方法,test1和Test2
// test
package main
import (
"fmt"
)
func test1() {
fmt.Println("i am test1!")
}
func Test2() {
fmt.Println("i am Test2!")
}
main.go中调用了test.go和util包下util.go中的方法,调用util包中的方法,必须因入util包
// stydy project main.go
package main
import (
"fmt"
"util"
)
func main() {
test1()
Test2()
util.Util1()
fmt.Println(util.PI)
}
运行结果如下:
从运行结果可以看出,同一个包下,test.go中,大小写开头的方法都可以调用,util.go中,我们只能调用大写字母开头的函数和变量。
2、变量
GO中使用var来声明一个变量,例如:
var x, y = 5, 6
或者
var x, y int = 5, 6
在或者
var x, y int
x, y = 5, 6
最后一种声明我们需要注意的是,在声明时如果没有赋值,那么变量的类型就不可以省略
3、短变量
在局部声明中我们可以使用短变量,如下
x, y := 5, 6
在GO中:=表示声明,=表示赋值,但是如果变量已经被声明,那么再次使用:=时表示赋值,但是需要注意的是,再次使用:=时必须有一个新的变量,如下
x, y := 5, 6
z, y := 8, 9
4、指针
变量是存储值得地方,指针的值是一个变量的地址。使用指针时,可以在无须知道变量名称的情况下,读取或者跟新变量的值。例如看下面一段代码:
var x int = 5
var p *int = &x
*p = 8
fmt.Printf("x=%d &x=%v p=%v\n", x, &x, p)
输出结果为:
从结果可以看出,我们在没有使用变量x的情况下修改了x的值,x的地址和p的地址是相同的
最后用一段练习代码来结束本篇博客,我们一起来写一个求圆面积和体积的方法
package main
import (
"fmt"
"math"
)
const PI = math.Pi
func getCircleArea(r float64) float64 {
return PI * math.Pow(r, 2)
}
func getBallSize(r float64) float64 {
return 4 * PI * math.Pow(r, 3) / 3
}
func main() {
r := 1.5
area := getCircleArea(r)
ballSize := getBallSize(r)
fmt.Printf("圆面积=%f 球体积=%f\n", area, ballSize)
}
结果: