91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

go語言漸入佳境[4]-scope作用域

發布時間:2020-06-18 11:32:06 來源:網絡 閱讀:313 作者:jonson_jackson 欄目:開發技術

作用域

universe block > package block > file block > function block > inner block

universe block

預聲明的標識符。Go文件全部使用

1
2
3
4
5
6
7
8
Types:
bool byte complex64 complex128 error float32 float64 int int8 int16 int32 int64 rune string uint uint8 uint16 uint32 uint64 uintptr
Constants:
true false iota
Zero value:
nil
Functions:
append cap close complex copy delete imag len make new panic print println real recover

package block

例子 fmt下面的函數println 就是package scope
1
2
3
4
5
6
7
8
9
10
package main

import "fmt"

var x int=5

func main(){

fmt.Println("mainx:",x)
}
外部變量是package block:

下面的代碼有效:

1
2
3
4
5
6
7
8
9
10
// f1.go
package main

var x int
// f2.go
package main

func f() {
 fmt.Println(x)
}
調用另一個包中的函數和屬性:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//testdemo/destdemo.go
package testdemo

import "fmt"

var Birth uint = 23
func Haha(){
fmt.Println("lalalal")
}
//-------------------------------------
package main  // main/scope.go

import (
"testdemo"
"fmt"
)

func main(){

testdemo.Haha()
fmt.Println(testdemo.Birth)
}
權限

如果要讓包中的屬性和變量被外部包調用,必須要首字母大寫。

file block

下面的代碼無效,因為import 是file block 。不能跨文件

1
2
3
4
5
6
7
8
9
10
// f1.go
package main

import "fmt"
// f2.go  無效
package main

func f() {
 fmt.Println("Hello World")
}

function block

函數體內部的變量是function block,注意前后順序,同時不能跨函數使用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
func main() {
 fmt.Println("Hello World")
 x := 5
 fmt.Println(x)
}


//下面的代碼無效:
func main() {
 fmt.Println("Hello World")

 fmt.Println(x)
   x := 5
}


//下面的代碼無效2:
func main() {
 fmt.Println("Hello World")
 x := 5
 fmt.Println(x)
}
//
func test(){
   fmt.Println(x)
}
函數內部變量與外部變量重名

就近原則

1
2
3
4
5
6
7
8
9
10
11
12
13
14
package main

import "fmt"

var x int=5

func test(){

var x int = 99;
x = 100;
fmt.Println("testx",x)
//fmt.Println("testy",y)

}

inner block

在花括號中聲明的變量只在花括號中有效。

1
2
3
4
5
6
7
8
//內部變量
func main() {
   fmt.Println("Hello World")  // x is out of scope
   {                           // x is out of scope
       x := 5                  // x is in scope
       fmt.Println(x)          // x is in scope
   }                           // x is out of scope again
}

下面代碼無效:

1
2
3
4
5
6
func main() {
   {
       x := 5
   }
   fmt.Println(x)
}

參考資料:
Variables

  • 本文鏈接: https://dreamerjonson.com/2018/11/17/golang-4-scope/

  • 版權聲明: 本博客所有文章除特別聲明外,均采用 CC BY 4.0 CN協議 許可協議。轉載請注明出處!

go語言漸入佳境[4]-scope作用域

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新源县| 五河县| 博野县| 临洮县| 宁波市| 兖州市| 弥渡县| 西乡县| 贵港市| 黄石市| 铜山县| 柏乡县| 金阳县| 长沙市| 讷河市| 城市| 阳信县| 香河县| 阳江市| 肥乡县| 海兴县| 中超| 兴仁县| 吴忠市| 昌图县| 伊宁县| 从江县| 乌兰县| 称多县| 呈贡县| 赤水市| 镇平县| 安陆市| 新余市| 长垣县| 古田县| 蛟河市| 山丹县| 赣州市| 怀柔区| 新丰县|