zoukankan      html  css  js  c++  java
  • go语言基本语法

    一个例子总结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 :https://www.cnblogs.com/sosogengdongni/p/10189535.html ,需要FQ才能打开链接。
    每天做好自己该做的事情,你就不会感到迷茫。
  • 相关阅读:
    记在百度(熊场)的一次面试
    smarty模板引擎的整理
    图片轮播原理
    递归遍历目录及删除文件
    Java入门
    Java入门
    Java入门
    Java入门
    开课导读
    Java入门
  • 原文地址:https://www.cnblogs.com/sosogengdongni/p/10188827.html
Copyright © 2011-2022 走看看