Golang 谁人不识君
文章目录
基础知识
变量
变量声明有三种方式:
可变量:
var <name> <type> [ = <initial value>]
常量:
const <name> <type> = <initial value>
简写方式,只能用于函数中,不能在全局环境下使用
<name> := <value>
|
|
100 200 300 hello world !
指针变量: var pr *int
整型指针,表示该指针指向的内存中存放的是一个整型数据
|
|
0xc0000b6008 100
n
是个整型变量,里面存储了一个 100 , pr = &n
意思是将 pr 指向 n 的地址,该地址
了存储了 100 的那块内存,所以 pr 实际上是一个内存中的16进制的地址值,对其取值
*pr
得到 100。
指针变量做为函数参数:
|
|
0xc0000180b8 100
函数
声明:
func <name>(arg1 <type>, arg2 <type>) <return type>
多个返回值:
func <name>(arg1 <type>, arg2 <type>) (<type1>, <type2>)
指定返回的变量名(此时 return 后面不需要明确返回变量):
func <name>(arg1 <type>, arg2 <type>) (a, b <type>)
测试:
|
|
fn1: 没有参数,没有返回值。 fn2: 一个返回值,返回两个参数的和。 fn3: 两个返回值,返回两个参数的和与差。 fn4: 两个返回值且指定返回变量名,返回的两个变量名不能和参数同名。 fn5: 同类型合并。 3 3 -1 2 3 10 20
TIP
注意: fn4, fn5 中 x, y 变量的使用,并没有采用 声明方式去赋值,如果这样 x := a +
1
会报错,因为返回值输写方式里面已经对 x, y 进行了声明。
另外,函数 fn1()
调用时不能 r1 := fn1()
因为它没有返回值,并且 fn3, fn4, fn5 在
调用的时候,如果要接收它们的返回值需要这样 r31, r32 = fn3(1,2)
要用两个变量去接
收。
函数做参数 : func fn(fn func([args...]) string) {...}
|
|
110
控制流
控制语句:
if
, else if
, else
, switch
, for
, defer
defer <statement>
延迟执行的语句,它们会在函数退出之前被执行。
|
|
in for, else, a = 0 in for, switch default, a = 0 in for, if a = 1 in for, switch default, a = 1 in for, else if a = 2 in for, switch default, a = 2 in for, else, a = 3 in for, switch case, a = 3 in for, else, a = 4 in for, switch case, a = 4 in for, else, a = 5 in for, switch default, a = 5 in for, else, a = 6 in for, switch default, a = 6 in for, else, a = 7 in for, switch default, a = 7 in for, else, a = 8 in for, switch default, a = 8 in for, else, a = 9 in for, switch default, a = 9 in for, else if a = 10, end. run before main exit, reset a value, a = 0
Goroutine & Channel
|
|
xxxxx
完整脑图
下载地址: Golang
问题
go get i/o timeout ?
|
|