Go Struct之函数参数设置

摘要:
golangstruct函数的参数设置:示例1:形式参数和类型是指针类型typeuserstruct{NamestringAgent}funcsetUser{a.名称=“fwefew”fmt.Printfmt.Printf}funcmain(){u:=用户{“xiaoming”,13}u.setUser(&u)fmt Printf}输出:func=˃形式参数的名称:fwefewfunc=˃结构类型的名称:fwefewmain=˃名称:fwrefew实例2:形式parameter和type都是通用类型typeuserstruct{NamestringAgent}funcsetUser{a.名称=“fwefew”fmt.Printfmt.Printf}funcmain(){u:=user{“xiaoming”,13}u.setUserfmt Printf}}输出:func=˃参数名称:fwefewfunc=˃结构类型名称:xiaomingmain=˃名称:xiaoling实例3:参数是指针类型,类型是通用类型userstruct{NamestrigAgeint}funcsetUser{a.name=“fwefew”fmt.Printffmt.Printf}funcmain(){u:=user{“xiaoming”,13}u.setUser(&u)fmt Printf}输出:func=˃形式参数的名称:fwefewfunc=˃结构类型的名称:xiaomingmain=˃name:fwefew实例4:形式参数是通用类型,类型是指针类型userstruct{NamestringAgent}funcsetUser{a.name=“fwefewfmt.Printfmt.Printf}funcmain(){u:=user{“xiaoming”,13}u.setUserfmt Printf}输出:func=˃参数名称:fwefewfunc=˃结构类型名称:xiaomingmain=˃名称:xiaoling摘要:当参数为指针类型时,当结构的参数被函数类修改时,函数外部的参数修改也会生效。

golang struct函数的参数设置:

实例一:形参和类型都为指针类型


type user struct {
    Name string
    Age  int
}
func (u *user) setUser(a *user) {
    a.Name = "fwefew"
   fmt.Printf("func => 形参的name:%s ",a.Name)
    fmt.Printf("func => struct类型的name:%s ",u.Name)
}
func main() {
    u := user{"xiaoming", 13}
    u.setUser(&u)
    fmt.Printf("main => name:%s ",u.Name)
}

输出:

func => 形参的name:fwefew
func => struct类型的name:fwefew
main => name:fwefew

实例二:形参和类型都为普通类型

type user struct {
    Name string
    Age  int
}

func (u user) setUser(a user) {
    a.Name = "fwefew"
    fmt.Printf("func => 形参的name:%s ",a.Name)
    fmt.Printf("func => struct类型的name:%s ",u.Name)
}

func main() {
    u := user{"xiaoming", 13}
    u.setUser(u)
    fmt.Printf("main => name:%s ",u.Name)
}

输出:

func => 形参的name:fwefew
func => struct类型的name:xiaoming
main => name:xiaoming

实例三:形参为指针类型、类型为普通类型

type user struct {
    Name string
    Age  int
}

func (u user) setUser(a *user) {
    a.Name = "fwefew"
    fmt.Printf("func => 形参的name:%s ",a.Name)
    fmt.Printf("func => struct类型的name:%s ",u.Name)
}

func main() {
    u := user{"xiaoming", 13}
    u.setUser(&u)
    fmt.Printf("main => name:%s ",u.Name)
}

输出:

func => 形参的name:fwefew
func => struct类型的name:xiaoming
main => name:fwefew

实例四:形参普通类型、类型为指针类型

type user struct {
    Name string
    Age  int
}

func (u *user) setUser(a user) {
    a.Name = "fwefew"
    fmt.Printf("func => 形参的name:%s ",a.Name)
    fmt.Printf("func => struct类型的name:%s ",u.Name)
}

func main() {
    u := user{"xiaoming", 13}
    u.setUser(u)
    fmt.Printf("main => name:%s ",u.Name)
}

输出:

func => 形参的name:fwefew
func => struct类型的name:xiaoming
main => name:xiaoming

总结:形参为指针类型时,在函数类修改struct的参数时,函数外部同样修改参数生效。

免责声明:文章转载自《Go Struct之函数参数设置》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇vim宏录制的操作Spark操作dataFrame进行写入mysql,自定义sql的方式下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

uniapp小程序获取用户头像和信息

1,获取用户信息(页面弹出授权框,获取头像和名称等等)使用api:getUserProfile()示例:html:  {{info.nickName}}获取用户信息data:i...

N1盒子刷Armbian整理

我买了一把亚美尼亚刷子,记录了投掷的过程。本文基于《斐济N1–完美机器刷臂教程》和《斐济N1刷臂5.64》,结合自身实际操作中遇到的问题。为了使斐济N1的所有硬件都能被armbian正常调度,需要将一组dtb文件适配到斐济N1。目前,斐济N1的dtb文件已被armbian包含在官方源代码库中,但Linux在使用时的负载将非常高,因此热心的网友为ARMBIAN...

Dubbo分布式日志追踪

尝试{returninvoker.invoke(invoke);}最后{MDC.remove(“traceId”);}}/**获取UUID*@returnStringUUID*/publicStringgetUUID(){Stringuuid=UUID.randomUUID(().toString();...

产品人必备干货:产品开发流程(完整版)

以后的产品开发流程也可以参考此文档的环节进行开发。产品经理根据设计人员提供的要求需要提供以下内容:功能类:功能流程图、产品的功能点、主要功能卖点。每一个icon的设计要跟整体页面的风格保持一致,这样才能保证所有页面设计完成以后风格是保持统一的。...

小程序真机上报错 for developer: some selectors are not allowed in component wxss , including tag name selectors, id selectors, and attribute selectors

在引用组件的组件和页面中使用后代选择器在某些极端情况下会产生意想不到的性能。如果是,请避免使用它们。子元素选择器只能在视图组件及其子节点之间使用,其他组件可能会导致意外情况。继承的样式(如字体和颜色)将从组件外部继承到组件内部。除了继承样式之外,app.wxss中的样式和组件所在页面的样式对于自定义组件无效。...

HTTP请求报文

不仅报表样式可以传递请求参数,请求url也可以以类似于键值对的方式传递数据...