<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                Golang是靜態類型語言,不能在運行期間改變變量類型。 變量 var 語句定義了一個變量的列表;跟函數的參數列表一樣,類型在后面。 初始化變量 使用關鍵字 var 定義變量,自動初始化為零值。如果提供初始化值,可省略變量類型,由編譯器自動推斷。 ~~~ package main var x int var f float32 = 1.6 var s = "abc" func main() { } ~~~ 一次性定義多個變量。 ~~~ package main var x, y, z int var s, n = "abc", 123 var ( a int b float32 ) func main() { n, s := 0x1234, "Hello, World!" println(x, s, n) } ~~~ 輸出結果: ~~~ 0 Hello, World! 4660 ~~~ 多變量賦值時,先計算所有相關值,然后再從左到右依次賦值。 ~~~ package main import "fmt" func main() { data, i := [3]int{0, 1, 2}, 0 i, data[i] = 2, 100 // (i = 0) -> (i = 2), (data[0] = 100) fmt.Println(i, data) } ~~~ 輸出結果: ~~~ 2 [100 1 2] ~~~ 變量定義可以包含初始值,每個變量對應一個。 ~~~ package main var i, j int = 1, 2 func main() { } ~~~ 如果初始化是使用表達式,則可以省略類型;變量從初始值中獲得類型。 ~~~ package main var c, python, java = true, false, "no!" func main() { } ~~~ 短聲明變量 在函數內部,可以使用更簡略的 ":=" 方式定義變量。":=" 簡潔賦值語句在明確類型的地方,可以用于替代 var 定義。 ~~~ package main import ( "fmt" ) var c, python, java = true, false, "no!" func main() { k := 3 c, python, java := false, true, "yes!" fmt.Println(c, python, java, k) //注意檢查,是定義新的局部變量,還是修改全局變量。該方式容易造成錯誤! } ~~~ 輸出結果: ~~~ false true yes! 3 ~~~ 函數外的每個語句都必須以關鍵字開始( var 、 func 、等等), ":=" 結構不能使用在函數外。 特殊只寫變量 "_",用于忽略值占位。 ~~~ package main func test() (int, string) { return 1, "abc" } func main() { _, s := test() println(s) } ~~~ 輸出結果: ~~~ abc ~~~ 編譯器會將未使 的局部變量當做錯誤。 ~~~ package main var s string // 全局變量沒問題。 func main() { i := 0 // ./main.go:6:7: i declared and not used (可使 "_ = i" 規避) } ~~~ 注意重新賦值與定義新同名變量的區別。 ~~~ package main func main() { s := "abc" println(&s) s, y := "hello", 20 // 重新賦值: 與前 s 在同 層次的代碼塊中,且有新的變量被定義。 println(&s, y) // 通常函數多返回值 err 會被重復使用。 { s, z := 1000, 30 // 定義新同名變量: 不在同 層次代碼塊。 println(&s, z) } } ~~~ 輸出結果: ~~~ 0xc42003df60 0xc42003df60 20 0xc42003df58 30 ~~~ Go 語言變量作用域 作用域為已聲明標識符所表示的常量、類型、變量、函數或包在源代碼中的作用范圍。 Go 語言中變量可以在三個地方聲明: ~~~ 函數內定義的變量稱為局部變量 函數外定義的變量稱為全局變量 函數定義中的變量稱為形式參數 ~~~ 接下來讓我們具體了解局部變量、全局變量和形式參數。 局部變量 在函數體內聲明的變量稱之為局部變量,它們的作用域只在函數體內,參數和返回值變量也是局部變量。 以下實例中 main() 函數使用了局部變量 a, b, c: ~~~ package main import "fmt" func main() { /* 聲明局部變量 */ var a, b, c int /* 初始化參數 */ a = 10 b = 20 c = a + b fmt.Printf("結果: a = %d, b = %d and c = %d\n", a, b, c) } ~~~ 輸出結果: ~~~ 結果: a = 10, b = 20 and c = 30 ~~~ 全局變量 在函數體外聲明的變量稱之為全局變量,全局變量可以在整個包甚至外部包(被導出后)使用。 全局變量可以在任何函數中使用,以下實例演示了如何使用全局變量: ~~~ package main import "fmt" /* 聲明全局變量 */ var g int func main() { /* 聲明局部變量 */ var a, b int /* 初始化參數 */ a = 10 b = 20 g = a + b fmt.Printf("結果: a = %d, b = %d and g = %d\n", a, b, g) } ~~~ 輸出結果: ~~~ 結果: a = 10, b = 20 and g = 30 ~~~ Go 語言程序中全局變量與局部變量名稱可以相同,但是函數內的局部變量會被優先考慮。實例如下: ~~~ package main import "fmt" /* 聲明全局變量 */ var g int = 20 func main() { /* 聲明局部變量 */ var g int = 10 fmt.Printf("結果: g = %d\n", g) } ~~~ 輸出結果: ~~~ 結果: g = 10 ~~~ 形式參數 形式參數會作為函數的局部變量來使用。實例如下: ~~~ package main import "fmt" /* 聲明全局變量 */ var a int = 20 func main() { /* main 函數中聲明局部變量 */ var a int = 10 var b int = 20 var c int = 0 fmt.Printf("main()函數中 a = %d\n", a) c = sum(a, b) fmt.Printf("main()函數中 c = %d\n", c) } /* 函數定義-兩數相加 */ func sum(a, b int) int { fmt.Printf("sum() 函數中 a = %d\n", a) fmt.Printf("sum() 函數中 b = %d\n", b) return a + b } ~~~ 輸出結果: ~~~ main()函數中 a = 10 sum() 函數中 a = 10 sum() 函數中 b = 20 main()函數中 c = 30 ~~~ 不同類型的局部和全局變量默認值: 全局: ~~~ package main import "fmt" var b bool var i int var i8 int8 var i16 int16 var i32 int32 var i64 int64 var ui uint var ui8 uint8 var ui16 uint16 var ui32 uint32 var ui64 uint64 var f32 float32 var f64 float64 var s string func main() { fmt.Printf("全局變量: bool 默認值:%v\n", b) fmt.Printf("全局變量: int 默認值:%v\n", i) fmt.Printf("全局變量: int8 默認值:%v\n", i8) fmt.Printf("全局變量: int16 默認值:%v\n", i16) fmt.Printf("全局變量: int32 默認值:%v\n", i32) fmt.Printf("全局變量: int64 默認值:%v\n", i64) fmt.Printf("全局變量: int64 默認值:%v\n", i64) fmt.Printf("全局變量: uint 默認值:%v\n", ui) fmt.Printf("全局變量: uint8 默認值:%v\n", ui8) fmt.Printf("全局變量: uint16 默認值:%v\n", ui16) fmt.Printf("全局變量: uint32 默認值:%v\n", ui32) fmt.Printf("全局變量: uint64 默認值:%v\n", ui64) fmt.Printf("全局變量: uint64 默認值:%v\n", ui64) fmt.Printf("全局變量: float32 默認值:%v\n", f32) fmt.Printf("全局變量: float64 默認值:%v\n", f64) fmt.Printf("全局變量: string 默認值:%v\n", s) } ~~~ 輸出結果: ~~~ 全局變量: bool 默認值:false 全局變量: int 默認值:0 全局變量: int8 默認值:0 全局變量: int16 默認值:0 全局變量: int32 默認值:0 全局變量: int64 默認值:0 全局變量: int64 默認值:0 全局變量: uint 默認值:0 全局變量: uint8 默認值:0 全局變量: uint16 默認值:0 全局變量: uint32 默認值:0 全局變量: uint64 默認值:0 全局變量: uint64 默認值:0 全局變量: float32 默認值:0 全局變量: float64 默認值:0 全局變量: string 默認值: ~~~ 局部: ~~~ package main import "fmt" func main() { var b bool var i int var i8 int8 var i16 int16 var i32 int32 var i64 int64 var ui uint var ui8 uint8 var ui16 uint16 var ui32 uint32 var ui64 uint64 var f32 float32 var f64 float64 var s string fmt.Printf("局部變量: bool 默認值:%v\n", b) fmt.Printf("局部變量: int 默認值:%v\n", i) fmt.Printf("局部變量: int8 默認值:%v\n", i8) fmt.Printf("局部變量: int16 默認值:%v\n", i16) fmt.Printf("局部變量: int32 默認值:%v\n", i32) fmt.Printf("局部變量: int64 默認值:%v\n", i64) fmt.Printf("局部變量: int64 默認值:%v\n", i64) fmt.Printf("局部變量: uint 默認值:%v\n", ui) fmt.Printf("局部變量: uint8 默認值:%v\n", ui8) fmt.Printf("局部變量: uint16 默認值:%v\n", ui16) fmt.Printf("局部變量: uint32 默認值:%v\n", ui32) fmt.Printf("局部變量: uint64 默認值:%v\n", ui64) fmt.Printf("局部變量: uint64 默認值:%v\n", ui64) fmt.Printf("局部變量: float32 默認值:%v\n", f32) fmt.Printf("局部變量: float64 默認值:%v\n", f64) fmt.Printf("局部變量: string 默認值:%v\n", s) } ~~~ 輸出結果: ~~~ 局部變量: bool 默認值:false 局部變量: int 默認值:0 局部變量: int8 默認值:0 局部變量: int16 默認值:0 局部變量: int32 默認值:0 局部變量: int64 默認值:0 局部變量: int64 默認值:0 局部變量: uint 默認值:0 局部變量: uint8 默認值:0 局部變量: uint16 默認值:0 局部變量: uint32 默認值:0 局部變量: uint64 默認值:0 局部變量: uint64 默認值:0 局部變量: float32 默認值:0 局部變量: float64 默認值:0 局部變量: string 默認值: ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看