• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

go语言基础之复合类型

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

1、分类

类型

名称

长度

默认值

说明

pointer

指针

 

nil

 

array

数组

 

0

 

slice

切片

 

nil

引⽤类型

map

字典

 

nil

引⽤类型

struct

结构体

 

 

 

2、指针

         指针是一个代表着某个内存地址的值。这个内存地址往往是在内存中存储的另一个变量的值的起始位置。Go语言对指针的支持介于Java语言和C/C++语言之间,它既没有想Java语言那样取消了代码对指针的直接操作的能力,也避免了C/C++语言中由于对指针的滥用而造成的安全和可靠性问题。

 

Go语言虽然保留了指针,但与其它编程语言不同的是:

  1. 默认值 nil,没有 NULL 常量
  2. 操作符 "&" 取变量地址, "*" 通过指针访问目标对象
  3. 不支持指针运算,不支持 "->" 运算符,直接⽤ "." 访问目标成员

示例:

package main //必须有个main包

import "fmt"

func main() {
	var a int = 10
	//每个变量有2层含义:变量的内存,变量的地址
	fmt.Printf("a = %d\n", a) //变量的内存
	fmt.Printf("&a = %v\n", &a)

	//保存某个变量的地址,需要指针类型   *int 保存int的地址, **int 保存 *int 地址
	//声明(定义), 定义只是特殊的声明
	//定义一个变量p, 类型为*int
	var p *int
	p = &a //指针变量指向谁,就把谁的地址赋值给指针变量 
	fmt.Printf("p = %v, &a = %v\n", p, &a)  //%v 自动配置类型

	*p = 666 //*p操作的不是p的内存,是p所指向的内存(就是a)
	fmt.Printf("*p = %v, a = %v\n", *p, a)

}

#执行结果:

a = 10
&a = 0xc00000c198
p = 0xc00000c198, &a = 0xc00000c198
*p = 666, a = 666

  

 

 

 

 

 

 

 

 

 

 

 

 

 

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Go modules基础精进,六大核心概念全解析(下)发布时间:2022-07-10
下一篇:
Go语言接口发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap