Go语言学习(三)

一.指针及其内存布局

指针变量存的是一个地址,地址所指的空间存的是变量的值。

package main
import(
	"fmt"
)
//Golang中指针类型演示
func main(){
	var i int = 10
	//输出i的地址
	fmt.Println("i的地址=", &i)
	var p *int = &i
	fmt.Println("p=", p)//p的值就是i的地址
	fmt.Println("*p=", *p)//*p才是获取p指向空间的值
	fmt.Println("&p=", &p)//这里输出的是指针变量p的地址(这个地址指向的空间用来装i的地址)
}

        值类型,都有对应的指针类型,形式为*数据类型,比如int对应*int, float32对应*float32,char对应*char等等。

二.值类型和引用类型

1)值类型:基本数据类型int系列,float系列,bool,string,数组和struct

(变量直接存储值,内存通常在栈中分配)

2)引用类型:指针,slice切片,map,管道chan,interface等

(变量存储的是一个地址,通常在堆区分配空间,当没有任何变量引用这个地址时,改地址对应的数据空间就成为一个垃圾,由GC来回收)

以上两处强调“通常”,是因为Go语言在编译阶段会有逃逸分析,会根据实际情况决定具体放在哪里。

三.标识符的使用规则

1)由26个字母大小写,0-9,下划线_组成

2)数字不能开头

3)严格区分大小写

4)标识符不能包含空格

5)下划线本身在Golang中就是一个特殊的标识符,称为空标识符,可以代表任何其他的标识符,但是他对应的值会被忽略(比如:忽略某个返回值),所以仅能被作为占位符使用,不能作为标识符使用

代码举例:

package main
import(
	"fmt"
)
func main(){
	var _ int = 10
	fmt.Println("_=", _)//这个代码会报错
}

报错:


.\pointer.go:7:13: cannot use _ as value

6)系统保留关键字不能做标识符(25个)

四.运算符基本介绍

1)算数运算符

+(正号,加号,字符串相加),-(负号,减号),*,/,%,++,--(这里的++,--都是后置,前置会报错,只能当做独立语言使用,比如a:=i++错。)

2)赋值运算符 =

3)比较运算符;关系运算符

==,!=,<, >, <=, >=

结果为bool类型,要么为true,要么为false

4)逻辑运算符

&&, ||, !

结果也是bool型

5)位运算符

&, ^, |, <<, >>

6)其他运算符

&:返回变量存储地址

*:指针变量

Go语言明确不支持三元运算符

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值