简介
1). 基本数据类型,变量存的就是值,也叫值类型
2). 获取变量的地址,用&,比如:var num int,获取num的地址: &num
3). 指针类型,变量存的是一个地址,这个地址指向的空间存的才是值 比如: var ptr *int = &num
4). 获取指针类型所指向的值,使用: *,比如: var *ptr int,使用 *ptr 获取 p指向的值
var i int = 9
//存放i的地址 &i
fmt.Println(" i address ", &i)
//下面的var ptr *int = &i
//1. ptr是一个指针变量
//2. ptr 的类型*int
//3. ptr本身的值&i
//4. 指针本身也是占用地址
var ptr *int = &i
fmt.Printf("ptr=%v \n",ptr)
fmt.Println(" ptr address ", &ptr)
fmt.Printf( "ptr 指向的值= %v ",*ptr)
指针细节说明
1).值类型,都有对应的指针类型,形式为 *数据类型,
比如 int的对应的指针就是*int, float32对应的指针类型就是 *float32,依次类推。
2).值类型包括:基本数据类型int系列, float系列, bool, string、数组和 结构体struct
值类型和引用类型
1). 值类型: 基本数据类型 int系列, float系列, bool, string 、数组和结构体struct
2). 引用类型: 指针、slice切片、map、管道chan、interface等都是引用类型
值类型和引用类型使用特点:
1). 值类型: 变量直接存储值,内存通常在栈中分配
2). 引用类型: 变量存储的是一个地址,这个地址对应的空间才真正存储数据(值),内存通
在堆上分配,当没有任何变量引用这个地址时,该地址对应的数据空间就成为一个垃圾,由GC来回收。
标识符的命名规范
标识符概念
1).Golang对各种变量、方法等命名时使用的字符序列称为标识符
2).凡是自己可以起名字的地方都叫标识符
标识符的命名规则
1). 由26个英文字母大小写,0-9 ,_组成
2). 数字不可以开头。
3). Golang中严格区分大小写。
4). 标识符不能包含空格。
5).下划线 "_" 本身在Go中是一个特殊的标识符,称为空标识符。可以代表任何其它的标识符,但是它对应的值会被忽略 (比如, 忽略某个返回值)。所以仅能被作为占位符使用,不能作为标识符使用。
6).不能以系统保留关键字作为标识符,比如 break.if 等等...
标识符命名注意事项
1).包名. 保持package的名字和目录保持一致,尽量采取有意义的包名,简短,有意义,
不要和标准库不要冲突
2).变量名、函数名、常量名,采用驼峰法。
3).如果变量名、函数名、常量名首字母大写,则可以被其他的包访间,如果首字母小写,
则只能在本包中使用(注。可以简单的理解成,首字母大写是公有的,首字母小写是私有的)
在导入其他包报错,情况如下
解决办法
1.设置环境变量
2.终端设置环境变量
3.确保目录结构是src开头的
4.应用
main.go
package main
import (
"fmt"
//为了使用model中的utils.go文件的变量或者函数,需要先引入改包
"secondGo/pratice/model"
)
func main(){
var str string = " you are ,you are "
fmt.Println(str)
fmt.Println(model.Htr)
}
utils.go
package model
var Htr string = " hello,myfriend"
5.结果
保留关键字和预定义标识符
在Go中.和了简化代码编译过程中对代码的解析,其定义的保留关健字只有25个:
除了保留关键字外,Go还提供了36个预定的标识符,其包括基础数据类型和系统内嵌函数: