Browse Source

函数、代码包

YWJL 2 years ago
parent
commit
a6779898ca
2 changed files with 76 additions and 3 deletions
  1. 12 1
      Go语言101/hello.go
  2. 64 2
      Go语言101/入门.md

+ 12 - 1
Go语言101/hello.go

@@ -55,7 +55,18 @@ func main() {
 
 	{
 		// 函数声明与调用
-		x, y := SquareesofSumAndDiff(1, 2)
+		// x, y := SquareesofSumAndDiff(1, 2)
+		// fmt.Printf("%d,%d", x, y)
+	}
+	{
+		//匿名函数
+		x, y := func() (int, int) {
+			print("hello")
+			return 3, 5
+		}()
+		func() {
+			println("hello")
+		}()
 		fmt.Printf("%d,%d", x, y)
 	}
 }

+ 64 - 2
Go语言101/入门.md

@@ -521,38 +521,100 @@ Golang 函数不支持入参默认值;参数是默认值是其类型的零值
 5| }
 ```
 
+### 函数调用
 
+一个声明的函数可以通过名称和一个实参列表来调用
+实参列表就是括号括起来的
+实参列表中每个单值实参对应着(或说被传递给了)一共形参
+函数传参属于赋值操作。
+实参类型与形参的声明类型不必严格一样。会存在隐式类型转换
 
+函数的声明可以在调用前,也可以调用后
 
+### 函数调用的退出阶段
 
+在Go中,当一个函数调用返回后(比如执行了一个return语句或者函数中的最后一 条语句执行完毕), 此调用可能并未立即退出。一个函数调用从返回开始到最终退 出的阶段称为此函数调用的退出阶段(exiting phase)。
 
+### 匿名函数
 
+```go
+func() {
+    println("hello")
+}()
+```
 
+Go支持匿名函数
 
+一个匿名函数在定义后可以被立即调用,如上示例
 
+也可以被赋值给某个函数类型的值,从 而我们不必在定义完此匿名函数后立即调用它,而是可以在以后合适的时候再调用它。
 
+### 内置函数
 
+# 代码包和包引入
 
+- main函数必须位于名为main的package包中
+- 对于一个fmt.Println函数调用,任何两个相邻的实参的输出之间将被插入 一个空格字符,并且在最后将输出一个空行字符
 
+```go
+1| package main
+2|
+3| import "fmt"
+4| import "math/rand"
+5|
+6| func main() {
+7| fmt.Printf("下一个伪随机数总是%v。\n", rand.Uint32())
+8| }
+```
 
+这个例子多引入了一个math/rand标准库包。 此包是math标准库包中的一个子 包。 此包提供了一些函数来产生伪随机数序列。
 
+- math/rand 标准库包的引入名是rand。 rand.Uint32() 函数调用将返回一共uint32类型的随机数
 
+### 代码包目录、代码包引入路径和代码包依赖关系
 
+todo:这个,咱之后再系统地结合gopath 和 goroot来看下吧
 
+### init 函数
 
+在程序运行时刻,在进入main入口函数之前,每个init函数在此包加载的时候将 被(串行)执行并且只执行一遍。
 
+*init函数可以有多个,串行执行*
 
+### 程序代码要素初始化顺序
 
+引用包中的init函数—>引用包的加载—>当前代码包的init函数—>当前代码包加载
 
+### 完整的引入声明语句形式
 
+```go
+import fmt "fmt" // <=> import "fmt"
+import rand "math/rand" // <=> import "math/rand"
+import time "time" // <=> import "time"
+```
 
+用于区分两个包名一样的代码包
 
+**句点引入**
 
+一个完整引入声明语句形式的引入名importname可以是一个句点(.)。 这样的引 入称为句点引入。使用被句点引入的包中的导出代码要素时,限定标识符的前缀必 须省略。
 
+```go
+1| package main
+2|
+3| import (
+4| . "fmt"
+5| . "time"
+6| )
+7|
+8| func main() {
+9| Println("Current time:", Now())
+10| }	
+```
 
+### 每个非匿名引入必须至少使用一次
 
-
-
+编译器会提示你的