登录
首页 >  Golang >  Go问答

能够从函数中返回指针以获取部分或全部多个值吗?

来源:stackoverflow

时间:2024-03-13 16:06:30 486浏览 收藏

IT行业相对于一般传统行业,发展更新速度更快,一旦停止了学习,很快就会被行业所淘汰。所以我们需要踏踏实实的不断学习,精进自己的技术,尤其是初学者。今天golang学习网给大家整理了《能够从函数中返回指针以获取部分或全部多个值吗?》,聊聊,我们一起来看看吧!

问题内容

使用 go 时,我在尝试返回字符串作为指针的同时也返回另一个值时遇到了各种错误。像这样的东西(请原谅这没有运行代码,我只是写它来表达我想要做什么,因为我不知道如何让它工作):

func A (s string) *string, int {

  // Stuff
  return &a, b
}
*c, d := A("Hi there.")

当我尝试各种组合时,将字符串(var.a)作为指针返回,我收到各种错误。这很简单,有几十个返回单个变量的示例,但我不确定是否可以使用多个返回值。

抱歉,如果这看起来是一个非常基本的问题,我仍然专注于 go。


解决方案


您可以从函数返回多个变量:

func a (s string) (string, int) {
  a := "hello world"
  b := 99

  return a, b
}

c, d := a("hi there.")

我想指出的一件事是,在 go 中,字符串不是指针。在 c 等语言中,您习惯于将 string 视为 char*,但是在 go 中,string 被视为原语,就像 int 一样。

这似乎有时会让人绊倒,但实际上它非常好,因为您不必担心带有字符串的指针。

如果您发现自己想要返回 nil 字符串(您不能这样做,因为它不是指针),那么您将返回一个空字符串 ("")。

指针:如果你真的想做指针...

func a (s string) (*string, int) {
  a := "hello world"
  b := 99

  // note: you have to have a variable hold the string.
  // return a, &"hello world" // <- invalid
  return a, &b
}

// 'd' is of type *string
c, d := a("hi there.")

var sptr *string = d
var s string = *d // use the * to dereference the pointer

正如golang规范中所说的here,你在this部分是错误的:

func A (s string) (*string, int) {
    //stuff
}

是可编译的代码

终于介绍完啦!小伙伴们,这篇关于《能够从函数中返回指针以获取部分或全部多个值吗?》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>