一个例子总结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

 

go语言基本语法的更多相关文章

  1. 【转】让Souce Insight支持多种语言的语法高亮:Python,Ruby,ARM汇编,windows脚本文件(bat/batch),PPC,SQL,TCL,Delphi等

    原文网址:http://www.crifan.com/source_insight_support_highlight_for_python_ruby_arm_batch_ppc_sql_tcl_de ...

  2. Java语言基本语法

    Java语言基本语法 一.标识符和关键字 标识符 在java语言中,用来标志类名.对象名.变量名.方法名.类型名.数组名.包名的有效字符序列,称为“标识符”: 标识符由字母.数字.下划线.美元符号组成 ...

  3. linux下常用语言的语法检查插件整理

    linux下常用语言的语法检查插件 可以结合vim语法检查插件syntastic使用,具体请参考syntastic使用说明 如php,sql,json,css,js,html,shell,c等语法插件 ...

  4. 初识 go 语言:语法

    目录 语法 for 循环 if 语句 switch 语句 defer 语句 defer 栈 结束 前言: go语言系列第二篇,主要讲述go语言的语法,如循环,if判断,swich语句,defer语句, ...

  5. Groovy语言学习--语法基础(5)

    至此groovy语言学习-语法基础就结束了,新的工作已经安排下来,要干活了. 对groovy了解到一定程度之后就可以在java项目中对其进行引入了.为此新建了一个微型的项目,个人觉得千言万语不如代码实 ...

  6. Groovy语言学习--语法基础(1)

    2018年11月末,从上家公司离职后进入现在的公司.进入项目以来,发现项目中有很多groovy脚本,以前没接触过groovy,抽时间系统地学一下,也方便后期项目的开发和维护. groovy和java的 ...

  7. C语言基础语法

    #include <stdio.h> int main() { int age; printf("input your age"); scanf("%d&qu ...

  8. 14 Go's Declaration Syntax go语言声明语法

    Go's Declaration Syntax go语言声明语法 7 July 2010 Introduction Newcomers to Go wonder why the declaration ...

  9. R语言基本语法

    R语言基本语法 基本数据类型 数据类型 向量 vector 矩阵 matrix 数组 array 数据框 data frame 因子 factor 列表 list 向量 单个数值(标量)没有单独的数据 ...

随机推荐

  1. Exp2 后门原理与实践 20164311

    实验一:使用netcat获取主机操作Shell,cron启动 1.Windows获得Linux Shell (1)打开本机win10的cmd.exe,使用命令 ipconfig 查看win10的IP地 ...

  2. Exp6 信息搜集与漏洞扫描 20164313 杜桂鑫

    1.实践目标 掌握信息搜集的最基础技能与常用工具的使用方法. 2.实践内容 (1)各种搜索技巧的应用 1.使用搜索引擎 在百度搜索栏内输入 site:com filetype:doc 北京电子科技学院 ...

  3. JavaScript代理模式

    代理模式的定义,代理是一个对象(proxy)用它来控制目标对象的访问.为此他要是先与目标对象相同的接口,但是他不同于装饰者模式,它对目标对象不进行任何修改,它的目的在于延缓"复杂" ...

  4. springboot学习随笔(二):简单的HelloWorld

    接上章搭建好springboot环境后,开始开发入门级HelloWorld 一.构建简单的springboot项目 1.新建项目,选择Spring/Spring Starter Project 2.N ...

  5. Ionic框架搭建简明教程

    1.安装node.js 安装教程:https://www.cnblogs.com/zhouyu2017/p/6485265.html 安装完成后,执行:cnpm install –g cordova ...

  6. ServerSocket详解及线程阻塞_03

    ServerSocket详解构造方法ServerSocket()ServerSocket(int port)ServerSocket(int port ,int backlog)serverSocke ...

  7. python学习笔记---环境的安装,pip命令,数据类型,运算

    1.进入python环境: python 2:py -2 python 3:py -3 2.退出python环境 exit()/quit()/ctrl+z+enter ctrl+z+enter没有尝试 ...

  8. @PostConstruct注解小结

    1.在具体Bean的实例化过程中,@PostConstruct注解的方法,会在构造方法之后,init方法之前进行调用2.在项目中@PostConstruct主要应用场景是在初始化Servlet时加载一 ...

  9. linux xfs的一次io异常导致的crash

    returned. [ blocked seconds.----这个默认是120,该环境上是被人为设置1200 [8556407.425653] "echo 0 > /proc/sys ...

  10. gson格式化参数 对象转Map

    前台传json到后台接收: String  params = request.getParameters("paramtes"); Map<String, Map<St ...