![68e36eb0eedaa771182451336cacdf85.png](https://img-blog.csdnimg.cn/img_convert/68e36eb0eedaa771182451336cacdf85.png)
题目演示:写一个程序,获取一个int变量的num的地址,并显示。
将num的地址赋给指针ptr,并通过ptr去修改num的值。
![0250cbdf66915e28ea052a9ffd284dec.png](https://img-blog.csdnimg.cn/img_convert/0250cbdf66915e28ea052a9ffd284dec.png)
指针使用细节:
(1)值类型,都有对应的指针类型,形式为 数据类型, 比如 int对应的指针类型就是int,那么float32对面的指针类型就是*float32,以此类推。(bool、string、数组和结构体)
值类型和引用类型介绍
值类型:基本数据类型int系列、float系列、bool、string、数组和结构体struct
引用类型:指针、slice切片、map、管道chan、interface等都是引用类型
值类型和引用类型的使用特点
1值类型:变量直接存储值,内存通常在栈中分配
2 引用类型:变量存储的是一个地址,这个地址对应的空间才真正存储数据,内存通常在堆上分配,当没有任何变量引用这个地址时,该地址对应的数据空间就成为一个垃圾,由GC来回收。
标识符的命名规范
(1)go语言中对各种变量、方法、函数等命名时使用的字符序列称为标识符
(2)凡是自己可以起名字的地方都叫标识符
命名规则
(1)由26个英文字母大小写,0-9,_组成
(2)数字不可以开头
(3)go语言严格区分大小写
(4)标识符不能包含空格
(5)下划线_本身在go中是一个特殊的标识符,称为空标识符。可以代表任何其他的标识符,但是它对应的值会被忽略,(比如,忽略某个返回值)。所以仅能被作为占位符使用,不能作为标识符使用。
(6)不能以系统保留关键字作为标识符,比如 break,if
break default func interface select
case defer go map struct
chan else goto package switch
const failthrough if range type
continue for import return var
标识符案例:
hello // ok
hello12 // ok
1hello // error不能以数字开头
s-b // error不能有—
s b // error不能用空格
h_4 //ok
_ab // ok
int //ok 但我们要不这样使用
_ //error
Abc //ok
标识符命名注意事项
(1)包名:保持package的名字和目录保持一致,尽量采用有意义的包名,简短,有意义,不要和标准库不要冲突 (如取名:fmt)
(2)变量名、函数名、常量名 、采用驼峰法
例 var stuName string = "jerry" 形如:xxxYyyyZzzzz....
(3)如果变量名、函数名、常量名首字母大写,则可以被其他的包访问;如果首字母小写,则只能在本包使用(可以理解为:首字母大写是公开的(public)首字母小写是私有的(private))在go语言中没有public、private等关键字。
预定义标识符:包括基础数据类型和系统内嵌函数
append bool byte cap close complex
complex64 complex128 copy false float32 float64
imag int int8 int16 int32 int64 uint uint8
uint16 uint32 uint64 lota len make new nil panic
print println real recover string true uintprt
运算符介绍:选取一些 不太懂的符号分析
(1)算术运算符
++ 自增 a=2 a++ 3
-- 自减 b=3 b-- 2
% 取余 7%5 2
....
注意事项:
在go语言中 ++和 --只能独立使用
题目练习:假如还有97天放假,还有几个星期和几天,定义一个华氏温度,华氏温度转摄氏温度,转换公式(5/9(华氏温度-100))
![b48166d3d5256bd0ee4673645ccdba28.png](https://img-blog.csdnimg.cn/img_convert/b48166d3d5256bd0ee4673645ccdba28.png)
![dc058888da19d3be9c3174075bc1abd0.png](https://img-blog.csdnimg.cn/img_convert/dc058888da19d3be9c3174075bc1abd0.png)
(2)赋值运算符
<<= 左移后赋值 c<<=2 等于 c=c<<2
>>= 右移后赋值 c>>=2 等于 c=c>>2
&= 按与位后赋值
^= 按位异或后赋值
!= 按位或后赋值
说明:回头学二进制时候在学习。
赋值运算的执行顺序是 : 从右向左。
例题:
![4fe3609c8c3e9f87df936789095b1b47.png](https://img-blog.csdnimg.cn/img_convert/4fe3609c8c3e9f87df936789095b1b47.png)
![13262c18782c88dadd5f29bc7854af3a.png](https://img-blog.csdnimg.cn/img_convert/13262c18782c88dadd5f29bc7854af3a.png)
(3)比较运算符/关系运算符
1关系运算符的结果都是 bool型,也就是说要么是true,要么是false
2 关系表达式经常在if结构的条件中或者循环结构的条件中
(4)逻辑运算符
&&,与运算符, 如果两边都为真,则都为真,否则为假。
|| ,或运算符,一边为真则为真。
! 逻辑非运算符, 如果条件真,则结果为假。
(5)位运算符
(6)其他运算符
& 返回变量存储地址 %a,给出a变量实际地址
- 指针变量 *a, 是一个指针变量
运算符优先级:从高到低
![59bc8978d1431c6daee55f344f5a5d08.png](https://img-blog.csdnimg.cn/img_convert/59bc8978d1431c6daee55f344f5a5d08.png)
大致顺序可以整理成:
1 括号 , ++ , --
2 单目运算
3 算术运算符
4 移位运算
5关系运算
6 位运算符
7 逻辑运算符
8 赋值运算符
9 逗号