首页 技术 正文
技术 2022年11月18日
0 收藏 721 点赞 2,402 浏览 2025 个字

一个例子总结go语言基本语法 demo.go package main import (    “fmt”) //结构体type PersonD struct {    id   int    name string} //1.函数 //接收值类型参数的函数func valueIntTest(a int) int{    return a+10} //接收指针类型参数的函数func pointIntTest(a *int) int{    return *a+10} //2.方法 //接收者为值类型func (p PersonD) valueShowName() {    fmt.Println(p.name)} //接收者为指针类型func (p *PersonD) pointShowName() {    fmt.Println(p.name)}  func main() {    //1.函数测试    //接收值类型参数的函数 测试    a := 2    fmt.Println(“valueIntTest:”,valueIntTest(a))    //函数的参数为值类型,不能将指针作为参数传递    //fmt.Println(“valueIntTest:”, valueIntTest(&a)) //cannot use &a (type *int) as type int in argument to valueIntTest      //接收指针类型参数的函数 测试    b := 5    fmt.Println(“pointIntTest:”, pointIntTest(&b))    // 当函数的参数为指针类型时,也不能直接将值类型作为参数传递    //fmt.Println(“pointIntTest:”, pointIntTest(b)) //cannot use b (type int) as type *int in argument to pointIntTest        //2.方法测试    //接收者是值类型的方法 测试    personValue := PersonD{101, “hongtao wang”}    personValue.valueShowName()    //可以用值类型对象调用指针类型方法    personValue.pointShowName()     //接收者是指针类型的方法 测试    personPointer := &PersonD{102, “wanghongtao”}    personPointer.pointShowName()    //可用指针类型的对象调用值类型方法    personPointer.valueShowName()     /*     总结:      go语言函数和方法的不同     1.定义上的不同(在函数名前面加上接收者就变成方法了)     函数的定义     func function_name( [parameter list] ) [return_types] {         函数体     }     方法的定义     func <接收者> function_name( [parameter list] ) [return_types] {         方法体     }     2.调用的区别      1)如果函数的参数是值类型,调用的时候不能将指针类型的值传入;同样如果函数的参数是指针类型,调用的不能将值类型的值传入      2)如果方法的接收者是值类型,既可以用值类型的对象调用也可以用指针类型的对象调用;通过如果方法的接收者是指针类型,既可以用指针类型的对象调用也可以用值类型的对象调用      go语言定义变量的几种方式     1) a := 2   最好用的方式     2) var a int = 2     3) var a int        a = 2      go语言定义指针     & 取出变量在内存中的存储地址(内存地址)     * 定义指针(第一次使用的时候定义指针,第二次使用取出指针指向内存地址中的值)     1) a := 2  定义变量        var p *int  定义指针        p = &a      把指针p指向变量a的内存地址        fmt.Println(*p) 取出指针指向内存地址中的值      go语言结构体定义     type PersonD struct {         id   int         name string     }     1)结构体对象初始化     personValue := PersonD{101, “hongtao wang”}     2)结构体指针对象初始化     personPointer := &PersonD{102, “wanghongtao”}  */  } 运行语言文件 go  run demo.go

valueIntTest: 12
pointIntTest: 15
hongtao wang
hongtao wang
wanghongtao
wanghongtao

 

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,077
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,552
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,401
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,176
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,813
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,896