go语言语法(基础语法篇)

import "workname/packetfolder"

导入多个包

方法调用 包名.函数//不是函数或结构体所处文件或文件夹名

packagename.Func()

前面加个点表示省略调用,那么调用该模块里面的函数,可以不用写模块名称了:

当导入一个包时,该包下的文件里所有init()函数都会被执行,然而,有些时候我们并不需要把整个包都导入进来,仅仅是是希望它执行init()函数而已。下划线的作用仅仅是为了调用init()函数,所以无法通过包名来调用包中的其他函数

import _ package

变量声明必须要使用否则会报错。

全局变量运行声明但不使用。

func 函数名 (参数1,参数2,...) (返回值a 类型a, 返回值b 类型b,...)

func 函数名 (参数1,参数2,...) (返回值类型1, 返回值类型2,...)

func (this *结构体名) 函数名(参数 string) (返回值类型1, 返回值类型2){}

使用大小来区分函数可见性

大写是public类型

小写是private类型

func prifunc int{}

func pubfunc int{}

声明静态变量

const value int

定义变量

var value int

声明一般类型、接口和结构体

声明函数

func function () int{}

go里面所有的空值对应如下

通道类型

内建函数 new 用来分配内存,它的第一个参数是一个类型,不是一个值,它的返回值是一个指向新分配类型零值的指针

func new(Type) *Type

[这位博主有非常详细的分析]

Go 语言支持并发,我们只需要通过 go 关键字来开启 goroutine 即可。

goroutine 是轻量级线程,goroutine 的调度是由 Golang 运行时进行管理的。

同一个程序中的所有 goroutine 共享同一个地址空间。

语法格式如下:

通道(channel)是用来传递数据的一个数据结构。

通道的声明

通道可用于两个 goroutine 之间通过传递一个指定类型的值来同步运行和通讯。操作符 - 用于指定通道的方向,发送或接收。如果未指定方向,则为双向通道。

[这里有比较详细的用例]

go里面的空接口可以指代任何类型(无论是变量还是函数)

声明空接口

go里面的的强制类型转换语法为:

int(data)

如果是接口类型的强制转成其他类型的语法为:

go里面的强制转换是将值复制过去,所以在数据量的时候有比较高的运行代价

浅谈Go语言函数与方法的区别

    前段时间,go语言函数声明我们实验室用go作为后台开发语言开发go语言函数声明了一个web项目,由于这是自己第一次使用go语言进行开发,在开发过程中,一味着追求完成任务,在编码的时候没有太注重性能,虽然勉强实现了功能,但是对go语言的理解还是比较浅显的。下面来谈谈自己对go语言中函数与方法的理解。

普通函数:

    go函数可以返回多个值

    值传递: 值传递是指在调用函数时将实际参数复制一份传递到函数中,这样函数中如果对参数进行修改,将不会影响到实际参数

    引用传递: 引用传递是指在调用函数将实际参数的地址传递到函数中,那么在函数中对参数进行的修改,将影响到实际参数。

一般来说go语言函数的 接收者(也就是形参)一般放在函数名后面 ,不能将指针类型的数据直接传递,也就是说函数形参如果是值类型,调用者必须使用值作为实参过来,如果函数形参是指针类型,则函数调用者需使用指针作为实参来调用。

普通方法:

接收者是在func关键字后面,而不是在函数名称后面,接收者可以是自己定义的一个类型,这个类型可以是struct、interface,一个方法就是一个包含了接收者的函数,接收者可以是命名类型或者是结构体类型的一个值或者是一个指针。

下面是一个例子来说明方法和函数的区别(重点)

Golang入门到项目实战 | golang 函数

函数go语言函数声明的go语言中的一级公民go语言函数声明go语言函数声明我们把所有的功能单元都定义在函数中,可以重复使用。函数包含函数的名称、参数列表和返回值类型,这些构成了函数的签名(signature)。

函数在使用之前必须先定义,可以调用函数来完成某个任务。函数可以重复调用,从而达到代码重用。

go语言函数定义语法

语法解析:

go语言函数定义实例

定义一个求和函数

定义一个比较两个数大小的函数

go语言函数调用

go语言函数声明我们要完成某个任务时,可以调用函数来完成。调用函数要传递参数,如何有返回值可以获得返回值。

运行结果

Go语言”奇怪用法“有哪些

1,gogo语言函数声明的变量声明顺序是go语言函数声明:”先写变量名,再写类型名“,此与C/C++go语言函数声明的语法孰优孰劣,可见下文解释:

2,go是通过package来组织go语言函数声明的(与python类似),只有package名为main的包可以包含main函数,一个可执行程序有且仅有一个main包,通过import关键字来导入其go语言函数声明他非main包。

3,可见性规则。go语言中,使用大小写来决定该常量、变量、类型、接口、结构或函数是否可以被外部包含调用。根据约定,函数名首字母小写即为private,函数名首字母大写即为public。

4,go内置关键字(25个均为小写)。

5,函数不用先声明,即可使用。

6,在函数内部可以通过 := 隐士定义变量。(函数外必须显示使用var定义变量)

7,go程序使用UTF-8编码的纯Unicode文本编写。

8,使用big.Int的陷阱:

9,从技术层面讲,go语言的语句是以分号分隔的,但这些是由编译器自动添加的,不用手动输入,除非需要在同一行中写入多个语句。没有分号及只需少量的逗号和圆括号,使得go语言的程序更容易阅读。

10,go语言只有一个循环结构——for循环。

11,go里的自增运算符只有——“后++”

12,go语言中的slice用法类似python中数组,关于slice的详细用法可见:

13,函数也是一个值,使用匿名函数返回一个值。

14,函数闭包的使用,闭包是一个匿名函数值,会引用到其外部的变量。

06-GoLang函数

C语言函数的类型

Go语言函数的类型和C语言 一样

注意点:

1、作为其他函数的 参数

2、作为其他函数的 返回值

注意点 :

输出函数

输入函数

第三种方式:

格式: fmt.Scanln(地址列表)

特点: 如果接收的不是字符串类型(%c), 会忽略空格和TAB, 但是不会忽略回车

标签: