gpt4 book ai didi

go - 在函数内部与外部定义结构的含义?

转载 作者:IT老高 更新时间:2023-10-28 13:04:49 25 4
gpt4 key购买 nike

在函数内部定义 struct 与在函数外部定义是否有任何影响(GC 流失、性能或其他)?例如:

type Outside struct {
Foo string `json:"foo"`
}

func SomeFunc(b []byte) error {
outside := Outside{}

if err := json.NewDecoder(b).Decode(&outside); err != nil {
return err
}

...
}

对比

func SomeFunc(b []byte) error {

type inside struct {
Foo string `json:"foo"`
}

if err := json.NewDecoder(b).Decode(&inside); err != nil {
return err
}

...
}

会不会有什么情况会优先考虑一个人?

最佳答案

对我来说,在函数中定义的类型的主要缺点是您无法在该类型上定义方法。

见这个例子https://play.golang.org/p/cgH01cRwDv6 :

package main

import (
"fmt"
)

func main() {
type MyType struct {
Name string
}

// You cannot define a method on your type
// defined in a function, can you?

func (m MyType) String() string {
return m.Name
}

m := MyType{Name: "Hello, World!"}
fmt.Println(m)
}

上面的示例将失败并出现错误 prog.go:15:27: expected ';', found 'IDENT' string (and 1 more errors)

关于go - 在函数内部与外部定义结构的含义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42010112/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com