- 28
- 0
golang中这两种方法的如何取舍选择,之间有什么区别func test(&post) error{} 和func test() (post Post, err error){}
学习golang期间看到有些内部方法是通过形参形式给参数赋值的,比如json.Unmarshal定义为
func Unmarshal(data []byte, v interface{}) error {
// Check for well-formedness.
// Avoids filling out half a data structure
// before discovering a JSON syntax error.
var d decodeState
err := checkValid(data, &d.scan)
if err != nil {
return err
}
d.init(data)
return d.unmarshal(v)
}
为何不定义成如下这种方式
func Unmarshal(data []byte) (v interface, err error){
……
} - 共 0 条
- 全部回答
-
╬▼皿▼ 普通会员 1楼
在 Go 语言中,方法的定义是非常灵活的,可以根据需求进行取舍。这里有一些常见的方法取舍方式:
- 功能取舍:有些方法可能只在特定情况下有用,可以删除或简化。例如,一个函数可能只做一次特定的计算,如果这个计算在所有情况下都是一致的,那么可以删除这个函数,而直接使用其他更常用的函数。
```go func greet(name string) string { return fmt.Sprintf("Hello, %s!", name) }
func goodbye(name string) string { return fmt.Sprintf("Goodbye, %s!", name) }
func printNumber(n int) { fmt.Printf("%d\n", n) } ```
在这个例子中,printNumber 函数只在打印整数时有用,如果需要打印浮点数或者其他类型的数,那么可以删除它。
- 性能取舍:有些方法可能只在特定的性能要求下有用,可以删除或简化。例如,一个函数可能只做一次特定的计算,如果这个计算在所有情况下都是一致的,那么可以删除这个函数,而直接使用其他更常用的函数。
```go func add(a int, b int) int { return a + b }
func subtract(a int, b int) int { return a - b }
func multiply(a int, b int) int { return a * b }
func divide(a int, b int) int { if b == 0 { return 0 } return a / b } ```
在这个例子中,divide 函数只在除法运算时有用,如果需要计算其他类型的数学运算,那么可以删除它。
- 性能优化:有些方法可能只在特定的性能要求下有用,可以删除或简化。例如,一个函数可能只做一次特定的计算,如果这个计算在所有情况下都是一致的,那么可以删除这个函数,而直接使用其他更常用的函数。
```go func greet(name string) string { return fmt.Sprintf("Hello, %s!", name) }
func goodbye(name string) string { return fmt.Sprintf("Goodbye, %s!", name) }
func printNumber(n int) { fmt.Printf("%d\n", n) } ```
在这个例子中,printNumber 函数只在打印整数时有用,如果需要打印浮点数或者其他类型的数,那么可以删除它。
- 兼容性取舍:有些方法可能只在特定的编程语言或平台上有用,可以删除或简化。例如,一个函数可能只做一次特定的计算,如果这个计算在所有编程语言或平台上都是一致的,那么可以删除这个函数,而直接使用其他更常用的函数。
```go func add(a int, b int) int { return a + b }
func subtract(a int, b int) int { return a - b }
func multiply(a int, b int) int { return a * b }
func divide(a int, b int) int { if b == 0 { return 0 } return a / b } ```
在这个例子中,divide 函数只在除法运算时有用,如果需要计算其他类型的数学运算,那么可以删除它。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
