<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之旅 廣告
                [TOC] # 定義 聲明格式,聲明了就一定要使用 ~~~ var 變量名 類型 ~~~ # 多個值定義 ~~~ package main import "fmt" func main() { //聲明了就一定要使用 var a int fmt.Println("a = ", a) //可以同時聲明多個 //var b, c int //自動推導.必須初始化,通過初始化值確定類型 c := 30 fmt.Println("c = ", c) //%T打印所屬類型,prinf fmt.Printf("c type is %T", c) } ~~~ # iota枚舉 iota常量自動生成器,每個一行,自動累加1,給常量賦值使用 iota遇到const,重置為0 ~~~ func main() { //1. iota常量自動生成器,每個一行,自動累加1 //2. iota給常量賦值使用 const ( a = iota //0 b = iota c = iota ) fmt.Printf("a = %d, b = %d, c = %d\n", a, b, c) //3. iota遇到const,重置為0 const d = iota fmt.Printf("d = %d\n", d) //4. 可以只寫一個iota const ( a1 = iota b1 c1 ) fmt.Printf("a1 = %d, b1 = %d, c1 = %d\n", a1, b1, c1) //5. 如果是同一行,值都一樣 const ( i = iota j1, j2, j3 = iota, iota, iota k = iota ) fmt.Printf("i = %d, j1 = %d, j2 = %d, j3 = %d, k = %d\n", i, j1, j2, j3, k) } ~~~ 輸出 ~~~ a = 0, b = 1, c = 2 d = 0 a1 = 0, b1 = 1, c1 = 2 i = 0, j1 = 1, j2 = 1, j3 = 1, k = 2 ~~~ # fmt包的格式化輸出和輸入 ![](https://box.kancloud.cn/87537def8972cd8c6d1c5702485d40d5_849x615.png) ![](https://box.kancloud.cn/1700074f4101f81e9f8715f9ca814ba9_846x443.png) ~~~ %v 相應值的默認格式。在打印結構體時,“加號”標記(%+v)會添加字段名 %#v 相應值的 Go 語法表示 %T 相應值的類型的 Go 語法表示 %% 字面上的百分號,并非值的占位符 ~~~ ~~~ func main() { a := 10 b := "abc" c := 'a' d := 3.14 //格式化輸出類型 fmt.Printf("a = %d, b = %s, c = %c, d = %f\n", a, b, c, d) //%v自動匹配格式輸出,字符變為ASCII碼了,浮點數0沒了 fmt.Printf("a = %v, b = %v, c = %v, d = %v\n", a, b, c, d) } ~~~ 輸出 ~~~ a = 10, b = abc, c = a, d = 3.140000 a = 10, b = abc, c = 97, d = 3.14 ~~~ # 打印地址 ~~~ func main() { var a int = 1 fmt.Println(&a) } ~~~ # 變量的輸入 scan獲取用戶輸入,記住要用取地址符 ~~~ func main() { var a int fmt.Printf("請輸入變量a: ") //阻塞用戶等待輸入 //fmt.Scanf("%d", &a) //別忘了& fmt.Scan(&a) fmt.Println("a = ", a) } ~~~ 獲取多個值用空格隔開 ~~~ import "fmt" func main() { var a int var b string fmt.Scanf("%d%s", &a, &b) fmt.Println(a) fmt.Printf(b) } ~~~ 輸出 ~~~ 11 222 11 222 ~~~ # 類型 byte字節, rune字符 ## 基礎類型 go語言內置以下這些基礎類型 ![](https://box.kancloud.cn/652dddb5095bd670469cd8285b6f69d5_858x669.png) ### 字符串 **字符串長度** ~~~ func main() { str1 := "mike" fmt.Println("len(str1) = ", len(str1)) } ~~~ **取字符串某個部位** ~~~ func main() { str1 := "mike" fmt.Printf("str1[0] = %c", str1[0]) } ~~~ ### 字符轉為ASCII ~~~ func main() { ch := 'a' fmt.Println("ch = ", ch) } ~~~ 輸出 ~~~ ch = 97 ~~~ ### 字符串兩種表示方式 雙引號"",可以包含控制知乎 反引號``,原樣輸出,空格和換行都有 ### 復數類型 判斷類型和輸出實部和虛部 ~~~ func main() { var t complex128 t = 2.1 + 3.14i fmt.Println("t = ", t) //自動推到類型 t2 := 3.3 + 4.4i fmt.Printf("t2 type is %T\n", t2) //通過內建函數,取實部和虛部 fmt.Println("實部 = ", real(t2), " , 虛部 = ", imag(t2)) } ~~~ 輸出 ~~~ t = (2.1+3.14i) t2 type is complex128 實部 = 3.3 , 虛部 = 4.4 ~~~ ### 整數和浮點型 int和平臺相關,不同平臺不一樣 ![](https://box.kancloud.cn/cd6c2fece28bd8f0a0c9ed984f097326_1074x471.png) # 類型別名 給類型起別名 ~~~ func main() { //給int64起個別名叫bigint type bigint int64 var a bigint //等價于var a int64 fmt.Printf("a type is %T\n", a) type ( long int64 char byte ) var b long = 11 var ch char = 'a' fmt.Printf("b = %d, ch = %c\n", b, ch) } ~~~ 輸出 ~~~ a type is main.bigint b = 11, ch = a ~~~ ## 非本地類型不能定義方法 能夠隨意地為各種類型起名字,是否意味著可以在自己包里為這些類型任意添加方法?參見下面的 ~~~ package main import ( "time" ) // 定義time.Duration的別名為MyDuration type MyDuration = time.Duration // 為MyDuration添加一個函數 func (m MyDuration) EasySet(a string) { } func main() { } ~~~ 代碼說明如下: * 第 8 行,使用類型別名為 time.Duration 設定一個別名叫 MyDuration。 * 第 11 行,為這個別名添加一個方法。 編譯上面代碼報錯,信息如下: ~~~ cannot define new methods on non-local type time.Duration ~~~ 編譯器提示:不能在一個非本地的類型 time.Duration 上定義新方法。非本地方法指的就是使用 time.Duration 的代碼所在的包,也就是 main 包。因為 time.Duration 是在 time 包中定義的,在 main 包中使用。time.Duration 包與 main 包不在同一個包中,因此不能為不在一個包中的類型定義方法。 解決這個問題有下面兩種方法: * 將第 8 行修改為 type MyDuration time.Duration,也就是將 MyDuration 從別名改為類型。 * 將 MyDuration 的別名定義放在 time 包中。 # 常量 iota在一個作用域里面是遞增的,出了就重新開始了 常量使用const修飾,代表永遠是只讀的,不能修改 語法: type可以省略 ~~~ const identifier [type] = value ~~~ ~~~~ const b string = "123" const b = "123" ~~~ 其他寫法 ~~~ const ( a = 1 b = 2 c //什么都不寫就和前面值是一樣是2 ) ~~~
                  <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>

                              哎呀哎呀视频在线观看