一、指针类型
package main
import "fmt"
func main() {
saylocation()
}
func saylocation() {
var i int = 10
fmt.Println("地址", &i)
var ptr *int = &i
i = 5
fmt.Println(ptr, *ptr, &i)
}
二、值类型和引用类型
1、值类型
变量直接存储值,内存通常在栈中分配
基本数据类型int系列、float系列、bool、string、数组和结构体struct
2、引用类型
变量存储的是一个地址,这个地址对应的空间才真正存储数据的值,内存通常在堆上分配,当没有任何变量引用这个地址时,该地址对应的数据空间就成为一个垃圾
由GC来回收
指针、slice切片、map、管道chan、interface引用类型
三、标识符的命名规范
Golang对各种变量、方法、函数等命名时使用的字符序列就是标识符
凡是可以自己取名的地方都交标识符
标识符的命名规则
1、由16个英文字母大小写、0-9、_组成
2、不可以数字开头
3、Golang中严格区分大小写
4、标识符不可以包含空格
5、下划线本身在Go中就是个特殊的标识符,称为空标识符,可以代表任何其他的标识符,但是他对应的值会被忽略,只可以作为一个占位符
6、不能以系统保留关键字作为标识符
保留关键字:
break default func interface select
case defer go map struct
chan else goto package switch
const fallthrough if range type
continue for import return var
命名的注意事项
1、包名
保持package的名字和目录一致,尽量采取有意义的包名,简短有意义
2、变量名、函数名、常量名
驼峰法
3、如果变量名、函数名、常量名首字母大写,则可以被其他的包访问;如果首字母小写则只能在本包内访问
可以理解为
首字母大写是公有的
首字母小写是私有的
package main
import (
"Godemo1/model"
"fmt"
)
func main() {
saylocation()
model.Sayhelo()
}
func saylocation() {
var i int = 10
fmt.Println("地址", &i)
var ptr *int = &i
i = 5
fmt.Println(ptr, *ptr, &i)
}
package model
import "fmt"
func Sayhelo() {
fmt.Println("hello")
}