go的结构体作为返回值

结构体有两种方式作为返回值

  • 结构体
  • 结构体指针

代码

package main

import (
	"fmt"
)

type SS struct {
   
	Name string
	Age  int
}

func getInfo() (*SS) {
   
	var ac = SS{
   }
	ac.Age = 1
	return &ac
}

func getInfo1() (aa *SS) {
   
	aa.Age = 1
	return
}

func getInfo2() (SS) {
   
	var ac = SS{
   }
	ac.Age = 1
	return ac
}

func main() {
   
	//var dd *SS
	//var dd = &SS{}
	var dc = &SS{
   }
	dc = getInfo()
	fmt.Println(dc.Age)

	var df = SS{
   }
	df = getInfo2()
	fmt.Println(df.Age)

	var dd = &SS{
   }
	dd = getInfo1()
	fmt.Println(dd.Age)
}


结果:

1
1
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x47ae8f]

goroutine 1 [running]:
main.getInfo1(...)
        /home/zhaoky/Desktop/kaiyue/aa/f.go:19
main.main()
        /home/zhaoky/Desktop/kaiyue/aa/f.go:41 +0xaf


分析
1、getinfo() 结构体指针 需要在返回的结构体在函数外有实体
2、getinfo1() 结构体指针 即使在函数外有实体也会报错崩溃,是因为此时给返回的结构体指针声明了一个结构体指针,但这个结构体指针没有实体,在赋值时会报错
3、getinfo2() 结构体作为返回值 外层可以有实体也可以没有

相关推荐

  1. go结构作为返回

    2023-12-13 05:18:02       59 阅读
  2. 返回作用,用法

    2023-12-13 05:18:02       59 阅读
  3. Go语言结构

    2023-12-13 05:18:02       26 阅读
  4. Go语言结构

    2023-12-13 05:18:02       34 阅读
  5. 数组作为参数和返回

    2023-12-13 05:18:02       28 阅读
  6. Python函数进阶:作为参数传递、作为返回

    2023-12-13 05:18:02       53 阅读
  7. 2.Go基本语法-指针、结构、Map

    2023-12-13 05:18:02       31 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-13 05:18:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-13 05:18:02       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-13 05:18:02       82 阅读
  4. Python语言-面向对象

    2023-12-13 05:18:02       91 阅读

热门阅读

  1. AtCoder ABC175

    2023-12-13 05:18:02       56 阅读
  2. 【数据结构和算法】种花问题

    2023-12-13 05:18:02       56 阅读
  3. 深入浅出接口测试原理及步骤

    2023-12-13 05:18:02       54 阅读
  4. linux的免密登录

    2023-12-13 05:18:02       63 阅读
  5. MTK Android P Sensor架构(二)

    2023-12-13 05:18:02       65 阅读
  6. *上位机的定义

    2023-12-13 05:18:02       64 阅读
  7. 数据结构和算法专题---5、调度算法与应用

    2023-12-13 05:18:02       50 阅读
  8. 《RabbitMQ Web STOMP:打破界限的消息传递之舞》

    2023-12-13 05:18:02       40 阅读
  9. 【Flink名称解释一】什么是cataLog

    2023-12-13 05:18:02       67 阅读
  10. Nginx命令---平滑重启重新加载配置

    2023-12-13 05:18:02       50 阅读