首页 > 其他分享 >golang 复杂数据类型

golang 复杂数据类型

时间:2023-02-14 22:33:58浏览次数:53  
标签:复杂 s1 数据类型 golang n1 n2 内存地址 fmt 指针

1.指针

  • 一个指针变量指向了一个值的内存地址,类似于变量和常量,在使用指针前你需要声明指针。
  • 每个变量在运行时都拥有一个地址,这个地址代表变量在内存中的位置。使用&字符放在变量前面对变量进行“取地址”操作。 Go语言中的值类型(int、float、bool、string、array、struct)都有对应的指针类型,如:*int、*int64、*string 等。

& 取内存地址
* 根据内存地址取值

package main

import "fmt"

func main() {
	var n1 int = 10
	fmt.Println("n1的内存地址为:", &n1)  //获取n1的内存地址值为:0xc00001c0b8
	var n2 *int = &n1              //n2为整型类指针,将n1的内存地址赋值给n2
	fmt.Println("n2的值为:", n2)      //输出的为n1的内存地址
	fmt.Println("n2地址指向的值为:", *n2) //输出的为n1的内存地址指向的值,为10
}

输出结果

n1的内存地址为: 0xc00001c0b8
n2的值为: 0xc00001c0b8
n2地址指向的值为: 10  

1.1 指针的使用

  • 可以通过指针改变指向值
package main

import "fmt"

func main() {
	var s1 string = "a"
	fmt.Println("s1的值为:", s1)
	var p1 *string = &s1         //定义p1的类型为字符串类型指针,将s1的内存地址赋值给p1
	*p1 = "b"                    //将p1内存地址指向的值重新赋值为b
	fmt.Println("s1的值为:", s1) //由于s1的内存地址没变,内存地址指向的值重新赋值了,所以重新输出s1的值为b
}

输出结果

s1的值为: a
s1的值为: b
  • 指针变量接收的一定是地址值
package main

import "fmt"

func main() {
	var n2 int = 100
	var p2 *int = n2
	fmt.Println("p2的值为:", p2)
}

输出结果

cannot use n2 (variable of type int) as *int value in variable declaration
  • 指针变量的类型不可以和内存地址不匹配

输出结果


标签:复杂,s1,数据类型,golang,n1,n2,内存地址,fmt,指针
From: https://www.cnblogs.com/LI-XinYu/p/17119841.html

相关文章

  • 让数据应用不再复杂
    当前,数据已成为实现经济高质量增长的关键要素,最大化释放数据要素的价值是数字经济时代的重点。以数据全方位驱动企业发展,已成为数字经济时代企业塑造核心竞争力的关键。随着......
  • 元组数据类型
    #元组数据类型与列表相似,但其不可改变,输入时使用()而不是[]>>>type(('hello',))#当元组中只有一个值时,括号内该值后面带逗号,表面其为元组数据<class'tuple'>>>>type......
  • pycharm的基本操作数据类型
      prcharm的基础操作1.切换版本翻译器file-settings-project-interpeter注释1.单行注释添加注释:#加上需要添加的注释快捷键:ctrl+?自动进行格式化code-reforma......
  • 基本数据类型与标识符
    基本数据类型+标识符注释单行注释://inta=1;多行注释/*inta=1;byteb=2;*/标识符标识符一般用于类名,接口名,变量,方法名等标识符由字母,数字,下划线,美元符组成......
  • 如何在 Golang 中打破一长行代码?
    这是StackOverflow上的一个问题,今天同事问我,我发现我也不知道。原问题译文:我不习惯看到超过80列的代码行。所以当我遇到这个时:err:=database.QueryRow("select*f......
  • 【Python21天学习挑战赛】集合 & 数据类型补充
    开头一叙:无论是以后学习需要或者是三年后的工作需要,都需要用到python的工具,也接着这次活动的机会,把python系统的学一遍。跟着大佬,让python知识从入门到精通。文章目录​​......
  • golang 排序
    排序都使用数组进行元素的保存1.冒泡排序。冒泡排序,从左到右,把后一个元素与前一个元素做比较,小的往前移位。1)一共会经过arr.length-1次的轮数比较,每一轮会确定一个数的......
  • C语言学习笔记(八): 自定义数据类型
    结构体变量什么是结构体C语言允许用户自己建立由不同类型数据组成的组合型的数据结构,它称为结构体结构体的成员可以是任何类型的变量,如整数,字符串,浮点数,其他结构体,指针......
  • 低代码开发平台 让数据应用不再复杂
    当前,数据已成为实现经济高质量增长的关键要素,最大化释放数据要素的价值是数字经济时代的重点。以数据全方位驱动企业发展,已成为数字经济时代企业塑造核心竞争力的关键。随......
  • Redis常用数据类型
    1.通用命令-KEYS:查看符合模板的所有key,`不建议在生产环境设备上使用`-DEL:删除一个指定的key-EXISTS:判断key是否存在-EXPIRE:给一个key设置有效期,有效期到期时该ke......