func Super (s Saiyan) 这里的 s 是什么意思?
0

type Saiyan struct {
  Name string
  Power int
}
func main() {
  goku := Saiyan{"Goku", 9000}
  Super(goku)
  fmt.Println(goku.Power)
}

func Super(s Saiyan) {
  s.Power += 10000
}

刚开始接接GO,很多不懂的地方。
下面定义Super方法时 func Super(s Saiyan) ,Saiyan是上面定义的结构体当做参数传进来,前面的s是什么意思?方法内用了s.Power+=10000 ,这里的 s 是 Saiyan?所以这里生成了Saiyan的副本?

最佳答案

看来你没有理解go的变量定义,像在c语言当中,变量的定义是这样的:类型 变量名 但是在 go 中是相反的:变量名 类型

4个月前
讨论数量: 7

看来你没有理解go的变量定义,像在c语言当中,变量的定义是这样的:类型 变量名 但是在 go 中是相反的:变量名 类型

4个月前

@wuuxiAoTeng
好像,看来是我想错了,我理解的Go函数应该是这样,func Super(变量名 类型) 那这里的类型应该是int string array 之类的,这里传入的Saiyan应该是结构体的名子,类似传入一个类名,这里蒙掉了,所以其实这里的Saiyan就是一个类型,对吧。

4个月前

@wuuxiAoTeng 好的,谢谢。

4个月前

跟 PHP 里l类似
function tet($a array){}

1个月前

那个s就是传递的参数,后面的Saiyan,是参数的类型约束

1个月前

同ts一样

1个月前

  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,使用方法请见 Emoji 自动补全来咯,可用的 Emoji 请见 :metal: :point_right: Emoji 列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
  请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!