当前位置:   article > 正文

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

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

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

目录

指针

定义指针

关键字new定义

函数返回指针

空指针

Go不支持语法汇总

总结


指针

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

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

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

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

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

定义指针

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

示例如下:

  1. package main
  2. import "fmt"
  3. func main() {
  4. name := "lisi"
  5. ptr := &name
  6. fmt.Println("name:", *ptr)
  7. fmt.Println("name ptr:", ptr)
  8. }

运行结果:

  1. name: lisi
  2. name ptr: 0xc000020070

关键字new定义

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

示例如下:

  1. name2Ptr := new(string)
  2. *name2Ptr = "Miko"
  3. fmt.Println("name2:", *name2Ptr)
  4. fmt.Println("name2 ptr:", name2Ptr)

函数返回指针

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

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

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

示例如下:

  1. package main
  2. import "fmt"
  3. func main() {
  4. // 可以返回栈上的指针,编译器在编译程序时,会自动判断这段代码,将city变量分配在堆上
  5. res := testPtr()
  6. fmt.Println("res city:", *res, ", address:", res)
  7. }
  8. // 定义一个函数,返回一个string类型的指针,go语言返回写在参数列表后面
  9. func testPtr() *string {
  10. city := "河北"
  11. ptr := &city
  12. return ptr
  13. }

空指针

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

示例如下:

  1. // if 与php 不同在于if没有小括号,即使只有一行也必须{}
  2. if res == nil {
  3. fmt.Println("name 是空, nil")
  4. } else {
  5. fmt.Println("name 是非空")
  6. }

Go不支持语法汇总

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

2.不支持地址加减

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

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

示例如下:

  1. package main
  2. import "fmt"
  3. func main() {
  4. //if 0 {
  5. // fmt.Println("不能使用0判断假")
  6. //}
  7. //if nil {
  8. // fmt.Println("不能使用nil判断假")
  9. //}
  10. if false {
  11. fmt.Println("这是假的情况")
  12. }
  13. if true {
  14. fmt.Println("这是真的情况")
  15. }
  16. // 不支持使用三目运算符
  17. //a, b := 1, 2
  18. //f := a > b ? 1:0
  19. }

总结

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/运维做开发/article/detail/844317
推荐阅读
相关标签
  

闽ICP备14008679号