Go语言指针及不支持语法汇总

本文为Go语言中指针定义和示例及不支持语法汇总。

目录

指针

定义指针

关键字new定义

函数返回指针

空指针

Go不支持语法汇总

总结


指针

Go语言也有指针,结构体成员调用时,obj.name

Go语言在使用指针时,会使用内容的垃圾回收机制(gc: garbage collector),

开发人员不需要手动释放内存

Go语言可以返回栈上的指针,程序会在编译的时候就确定了变量的分配位置;

编译的时候,如果发现有必要的话,就将变量分配到堆上。

定义指针

定义一个变量,然后把它的指针赋值给另一个变量。

示例如下:

Go 复制代码
package main

import "fmt"

func main() {
   name := "lisi"
   ptr := &name
   fmt.Println("name:", *ptr)
   fmt.Println("name ptr:", ptr)
}

运行结果:

bash 复制代码
name: lisi

name ptr: 0xc000020070

关键字new定义

还可以使用关键字new来进行指针的定义。

示例如下:

Go 复制代码
name2Ptr := new(string)
*name2Ptr = "Miko"
fmt.Println("name2:", *name2Ptr)
fmt.Println("name2 ptr:", name2Ptr)

函数返回指针

定义一个函数,返回一个string类型的指针,go语言返回写在参数列表后面。

可以返回栈上的指针,编译器在编译程序时,

会自动判断这段代码,将city变量分配在堆上。

示例如下:

Go 复制代码
package main

import "fmt"

func main() {
   // 可以返回栈上的指针,编译器在编译程序时,会自动判断这段代码,将city变量分配在堆上
   res := testPtr()
   fmt.Println("res city:", *res, ", address:", res)
}

// 定义一个函数,返回一个string类型的指针,go语言返回写在参数列表后面
func testPtr() *string {
   city := "河北"
   ptr := &city
   return ptr
}

空指针

空指针,在C语言:null;go:nil。

示例如下:

Go 复制代码
// if 与php 不同在于if没有小括号,即使只有一行也必须{}
if res == nil {
   fmt.Println("name 是空, nil")
} else {
   fmt.Println("name 是非空")
}

Go不支持语法汇总

1.自增--i, ++i不支持

2.不支持地址加减

3.不支持三目运算符?:

4.只有false才能代码逻辑假,数字0和nil不能

示例如下:

Go 复制代码
package main

import "fmt"

func main() {
   //if 0 {
   // fmt.Println("不能使用0判断假")
   //}
   //if nil {
   // fmt.Println("不能使用nil判断假")
   //}
   if false {
      fmt.Println("这是假的情况")
   }
   if true {
      fmt.Println("这是真的情况")
   }

   // 不支持使用三目运算符
   //a, b := 1, 2
   //f := a > b ? 1:0
}

总结

本文为Go语言中指针定义和示例及不支持语法汇总。

相关推荐
李永奉6 小时前
C语言-嵌入式开发C语言常用预处理指令合集
c语言·开发语言
程序员爱钓鱼6 小时前
Rust Copy详解:隐式复制与轻量数据类型
前端·后端·rust
上海安当技术7 小时前
敏感数据怎么防拖库?信封加密(DEK+KEK 二层密钥)架构设计与 Java 实战
java·开发语言·python
我是唐青枫7 小时前
Java JCommander 实战详解:用注解解析命令行参数
java·开发语言
大鹏说大话7 小时前
C++ 内存布局详解:类、虚函数、虚表底层原理
java·开发语言
仙人球部落 揞殺7 小时前
细说ASP.NET的各种异步操作
后端·asp.net
键盘会跳舞7 小时前
C++:容器适配器 queue 的源码级拆解
开发语言·c++·queue
Loge编程生活8 小时前
打卡信奥刷题(3449)用C++实现信奥题 P10429 [蓝桥杯 2024 省 B] 拔河
开发语言·数据结构·c++·算法·青少年编程
卷无止境9 小时前
当独立开发者也能造出3A画质的游戏:Godot引擎深度解析
后端·python·godot
在世修行9 小时前
从零打造 C# 工业视觉检测系统(八):Modbus RTU 协议解析与 PLC 剔除控制实战
开发语言·c#