go语言基本语法 - sosogengdongni

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才能打开链接。