GO语言基础语法 | 结构体和指针(上) | 青训营笔记

55 阅读2分钟

最简单的代码

package main

import "fmt"

func main() {
	var a int = 114514
	fmt.Printf("变量地址:%x\n", &a)
}

什么是指针

一个指针变量指向了一个值的内存地址。 类似于变量和常量,在使用指针前你需要声明指针。指针声明格式如下:

var var_name *var-type

var-type 为指针类型,var_name 为指针变量名,* 号用于指定变量是作为一个指针。以下是有效的指针声明:

var ip *int        /* 指向整型*/
var fp *float32    /* 指向浮点型 */

本例中这是一个指向 int 和 float32 的指针。

如何使用指针

指针使用流程:

  • 定义指针变量。
  • 为指针变量赋值。
  • 访问指针变量中指向地址的值。
package main

import "fmt"

func main() {
	var a int = 114514
	var ip *int
	ip = &a
	fmt.Println(a)
	fmt.Println(ip)
}

跟C语言差不多 当谈到 Go 语言中的指针时,我们需要理解指针的概念以及在 Go 语言中如何使用它们。指针是一种特殊的变量类型,它存储了一个变量的内存地址。使用指针可以通过引用和修改内存地址来操作变量。下面是一些关于 Go 语言指针的重要概念和用法的笔记。 定义指针变量: 在 Go 语言中,可以使用 * 符号来声明一个指针变量。例如,var ptr *int 声明了一个指向整数类型的指针变量 ptr。指针变量存储了某个变量的内存地址。 获取变量的地址: 要获取变量的地址,可以使用 & 符号。例如,var num int = 42 ptr := &num,其中 ptr 存储了 num 的地址。

ptr := new(int)
*ptr = 42
fmt.Println(*ptr) // 输出 42

除此之外还有指针的安全性,我个人是做企业/政府以及一些涉密单位的安全,这块的话,指针的安全性: 相对于其他一些编程语言,Go 语言中的指针使用更为安全。它不支持指针运算和直接访问内存地址。Go 语言具有垃圾回收机制,可以自动处理不再使用的内存,从而避免了许多常见的指针错误。

指针是一项强大而灵活的功能,可以用于在 Go 语言中实现更高级的数据结构和算法。理解指针的概念,并熟练地使用它们,