zoukankan      html  css  js  c++  java
  • GO学习笔记

    在刚接触GO语言时候,我相信你也会有这种困惑,为什么有的函数名前面有输入参数,而一些却没有,它们是否有差别?确实有差别,没有输入参数,是一般的函数;有输入参数,是结构的方法,输入参数叫做“方法接收者”!GO语言没有类,方法都定义在结构上了!!

    官方教程:

    函        数:https://tour.go-zh.org/basics/4

    结构体方法:https://tour.go-zh.org/methods/1

    实例代码:

    main.go : 引入了“sunylat/demo”包,调用ShowStructFunc() 演示调用结构体函数。

    package main
    
    import(
    	"sunylat/demo"
    )
    
    func main() {
    
    	//演示结构函数
    	demo.ShowStructFunc()
    
    }
    

    demo/structFunc.go : 调用mydata包ShowStructFunc() 

    package demo
    
    import (
    	"sunylat/mydata"
    	"fmt"
    )
    
    func ShowStructFunc() {
    
    	//声明结构函数输入的变量
    	var (
    		idIn   string
    		nameIn string
    	)
    
    	//给结构函数输入的变量赋值
    	idIn = "this is id"
    	nameIn = "this is name"
    
    	//得到结构
    	ts := &mydata.TestStruct{}
    
    	//调用结构函数1
    	idOut, nameOut := ts.StructFunc(idIn, nameIn)
    
    	fmt.Println("StructFunc 函数输出
     id : " + idOut + "
     name : " + nameOut)
    
    	//-----------------------------------------------------------------------
    
    	fmt.Println("-----------------------------------------------------------------------")
    
    	//调用结构函数2
    	ts2:=ts.StructFunc2(idIn, nameIn)
    
    	fmt.Println("StructFunc2 函数输出
     id : " + ts2.Id + "
     name : " + ts2.Name)
    
    	//-----------------------------------------------------------------------
    
    	fmt.Println("-----------------------------------------------------------------------")
    
    	//调用普通函数
    	outPut:=mydata.OrdinaryFunc("this is ","OrdinaryFunc()")
    
    	fmt.Println("OrdinaryFunc 函数输出
     "+outPut)
    
    }
    

    mydata/export.go : 定义了两个结构方法,返回值不一样 ;定义了一个普通函数,用于区别结构方法和普通函数。

    package mydata
    
    //自定义的结构,首字母大写可以被导出,包括里面的字段首字母大写才被输出
    type TestStruct struct {
    	Id string
    	Name string
    }
    
    //这是一个结构函数,返回两个值,输入为方法接收者
    func (ts *TestStruct) StructFunc (idIn,nameIn string) (idOut,nameOut string){
    
    	ts.Id=idIn;
    	ts.Name=nameIn;
    
    	return ts.Id,ts.Name
    }
    
    //这是另外一个结构函数,返回结构,输入为方法接收者
    func (ts *TestStruct) StructFunc2 (idIn,nameIn string) TestStruct{
    
    	ts.Id=idIn;
    	ts.Name=nameIn;
    
    	return *ts
    }
    
    //这是普通函数,函数名前面没有方法接收者
    func  OrdinaryFunc (input1,input2 string) (outPut string){
    
    	temp:=input1+input2
    
    	return temp
    }
    

    运行结果截图:

  • 相关阅读:
    【BZOJ】1671: [Usaco2005 Dec]Knights of Ni 骑士(bfs)
    【BZOJ】1689: [Usaco2005 Open] Muddy roads 泥泞的路(贪心)
    Maven使用
    上传图片
    Model、ModelMap和ModelAndView的使用详解
    Spring MVC 基于AnnotationFormatterFactory接口实现自定义的规则
    mybatis 分页插件PageHelper的简单使用
    Mybatis 自动生成mapper文件
    Tomcat部署时war和war exploded区别以及平时踩得坑
    springMVC @response 中文乱码解决
  • 原文地址:https://www.cnblogs.com/sunylat/p/6384721.html
Copyright © 2011-2022 走看看