一个例子总结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. Android 开发 ConstraintLayout详解

    implementation 'androidx.constraintlayout:constraintlayout:2.0.0-alpha3' app:layout_constraintHorizo ...

  2. Spring-内置Resouce

    Spring 内置Resouce Resource: org.springframework.core.io.Resource; 内置方法 public interface Resource exte ...

  3. Windows 2008 R2 域控制器防止意外删除现有OU的设置

    Windows 2008 R2 域控制器防止意外删除现有OU(组织单元)的设置:1.以管理员身份运行Active Directory的Windows PowerShell模块: 2.键入以下命令来检查 ...

  4. 【转】WPS word 文档中的插入对象 为什么打不开

    点击桌面左下角开始按钮--所有程序,找到wps office文件夹--wps office工具--配置工具--高级--兼容设置,否选兼容第三方软件.

  5. Unix/Linux系统的发展史

    Unix/Linux系统相信是学编程的人都认识这两个系统.我们知道Unix要钱,而Linux免费,而且这两者之间的发展史是什么样的,是不是两者就是同一个东西呢? 我将会以时间的发展过程来一步步的给大家 ...

  6. CS通用项目系统搭建——三层架构第二天 (补一篇完整的SqlHelper)

    #region ExecuteNonQuery(如果是增,删,修) /// <summary> /// 执行sql命令 /// </summary> /// <param ...

  7. CentOS7搭建Zookeeper环境

    Linux下安装JDK 1.检查一下系统中的jdk版本 [root@localhost software]# java -version 显示: openjdk version "1.8.0 ...

  8. Win10系统总是提示"在商店中查找应用"的关闭方法

    Win10系统总是提示"在商店中查找应用"该怎么关闭?win10中打开文件的时候总是提示在商店中查找应用,但是自己的电脑中有程序可以打开这个文件,不需要去商店中下载,该怎么取消这个 ...

  9. Redis安装教程及可视化工具RedisDesktopManager下载安装

    Redis安装教程: 1. Windows下安装教程: 下载:https://github.com/MSOpenTech/redis/releases Redis 支持 32 位和 64 位.这个需要 ...

  10. pandas,读取或存储DataFrames的数据到mysql中

    dataFrames格式的数据是表格形式的,mysql数据库中的数据也是表格形式的,二者可以很方便的读取存储   安装依赖的包 pip install pandas pip install sqlal ...