go interface转int_go语言学习笔记(5)- 指针、标识符、运算符

68e36eb0eedaa771182451336cacdf85.png

题目演示:写一个程序,获取一个int变量的num的地址,并显示。

将num的地址赋给指针ptr,并通过ptr去修改num的值。

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

dc058888da19d3be9c3174075bc1abd0.png

(2)赋值运算符

<<= 左移后赋值 c<<=2 等于 c=c<<2

>>= 右移后赋值 c>>=2 等于 c=c>>2

&= 按与位后赋值

^= 按位异或后赋值

!= 按位或后赋值

说明:回头学二进制时候在学习。

赋值运算的执行顺序是 : 从右向左。

例题:

4fe3609c8c3e9f87df936789095b1b47.png

13262c18782c88dadd5f29bc7854af3a.png

(3)比较运算符/关系运算符

1关系运算符的结果都是 bool型,也就是说要么是true,要么是false

2 关系表达式经常在if结构的条件中或者循环结构的条件中

(4)逻辑运算符

&&,与运算符, 如果两边都为真,则都为真,否则为假。

|| ,或运算符,一边为真则为真。

! 逻辑非运算符, 如果条件真,则结果为假。

(5)位运算符

(6)其他运算符

& 返回变量存储地址 %a,给出a变量实际地址

  • 指针变量 *a, 是一个指针变量

运算符优先级:从高到低

59bc8978d1431c6daee55f344f5a5d08.png

大致顺序可以整理成:

1 括号 , ++ , --

2 单目运算

3 算术运算符

4 移位运算

5关系运算

6 位运算符

7 逻辑运算符

8 赋值运算符

9 逗号

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值