PHP->GO 基礎-資料型別-筆記

Pon發表於2019-12-18

字元型別

package main
import  "fmt"
func main(){
    var ch byte //宣告字元型別
    //格式化輸出 %c以字元方式列印,“%d以整型方式列印”
    ch = 97 
    fmt.Printf("%c,%d\n",ch,ch)

    ch =  'a' //字元使用單引號
    fmt.Printf("%c,%d\n",ch,ch)

    //大寫轉小寫,小寫轉大寫,大小寫相差32,小寫大
        fmt.Printf("大寫:%d, 小寫:%d\n", 'A', 'a')
        fmt.Printf("大寫轉小寫:%c", 'A'+32)
        fmt.Printf("小寫轉大寫:%c", 'a'-32)
}

字串型別

package main
import  "fmt"
func main(){
    var str1 = string //宣告變數
    str1 = "abc"
    str2 := "mike" //自動推導
   //len() 內建函式可獲取字串長度
   fmt.PrintIn("長度:", len(str2))
   // 支援使用key 獲取單個字元 例如 str1[0] = "a"

}
型別 string byte
字元數量 可以多個(var a string = "efg") 只能是一個 (var a byte = 'b') 轉義字元除外
符號 " " ' '
隱藏結束符 \0

複數型別

package main
import  "fmt"
func main(){
var t complex128  //宣告型別
 t = 2.1 + 3.14i //賦值 (2.1 + 3.14i) complex128
 t2  := 3.14+4.4i //自動推導型別  (3.14+4.4i) complex128
 //通過內建函式,取實步和虛部
 real(t) //取實部
 imag(t) //取虛部
}

格式化輸出

package main
import  "fmt"
func main(){
 a := 10
 b := "abc"
 c := 'a'
 d := 3.14
 // %%T操作變數所屬型別
 fmt.Printf("%T,%T,%T,%T\n",a,b,c,d)
 //%d 整型格式
 //%s 字串格式
 //%c 字元個數
 //%f 浮點型個數
  fmt.Printf("%d,%s,%c,%f\n",a,b,c,d)
}

變數的輸入

package main

import (
    "fmt"
)

func main() {
    var a int //宣告變數
    fmt.Printf("請輸入變數a:")
    //阻塞等待使用者的輸入
    fmt.Scanf('%d',&a) //注意加 &
    fmt.Scan(&a) //不需要輸入格式,更簡易
    fmt.Println("a=",a)
}

變數作用域

package main

import "fmt"

var a byte //全域性變數 在函式外定義
func main() {
    var a int //區域性變數
    //不同作用域,允許定義同名變數
    //使用變數的原則,就近原則
    fmt.Printf("T%\n", a) //int
    {
        var a float32
        fmt.Printf("2:T%\n", a) //float32
    }
    test()
}

func test() {
    fmt.Printf("3:T%\n", a) //bety
}

型別轉換

package main
import "fmt"
func main() {
    // 不能轉換的型別,叫不相容型別
    var flag bool
    flag = true
    fmt.Printf("flag = %t\n",flag)
    //bool 型別不能轉為int 
    fmt.Printf("flag = %d\n",int(flag)) 
    //0就是假 非0就是真
    //整型也不能轉為bool
     flag = bool(1) //報錯
    var ch = byte 
    ch = 'a' //字元型別本質上就是整型
    var t = int
    t = int(ch) //型別轉換, 吧ch的值取出來後,轉成int 給t賦值
    fmt.Print("t= ",t)
}

型別別名

package main
import "fmt"
func main() {
    //給int64起一個別名叫bigint
    type bigint int64
    var a bigint //等價於 var a int 64
    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)
}

運算子

非0就是真,0就是假(但是go 語言中的bool型別和int 型別不相容)

判斷一個數的範圍 不能用 0<= a <= 10 需要用 0<= a && a<= 10

if判斷語句

package main

import "fmt"

func main() {
    s := "屌絲"
    if s == "屌絲" {//與php區別在於 不需要()
        fmt.Println("ok")
    }
    //if支援1個初始化語句,初始化語句和判斷以分號分割
    if a := 10; a == 10 {
        fmt.PrintIn("ok")
    }
}

switch語句

package main

import "fmt"

func main() {
    a := 2

    switch a {
    case 1:
        fmt.Println(1)
        //fallthrough //不跳出switch 語句,後面的無條件執行
        break //go語言保留了break 關鍵字 跳出switch  不寫則預設包含
    case 2:
        fmt.Println(2)
        break
    case 3,4,5,6://case 後面可以寫多個值
        fmt.Println(3)
        break
    default:
        fmt.Println(0)
    }

    //支援一個初始化語句,初始化語句和變數本身,以分號隔開
    switch b := 1; b {
    case 1:
        fmt.Println(1)
    case 2:
        fmt.Println(2)
    case 3:
        fmt.Println(3)
    default:
        fmt.Println(0)
    }

    score := 85
    switch { //可以沒有條件
    case score > 90: //case 後面可以放條件(與php不同)
        fmt.Println(1)
    case score > 80:
        fmt.Println(2)
    case score > 70:
        fmt.Println(3)
    default:
        fmt.Println(0)
    }
}

for迴圈

package main

import "fmt"

func main() {
    //for 初始化條件;判斷條件;條件變化{
    //  }
    //判斷條件是否為真, i <= 100 , 如果為真,執行迴圈體,如果為假,跳出迴圈體
    // 條件變化 i++
    // 重複...
    num := 0
    for i := 1; i <= 10; i++ {
        num++
    }
    fmt.Println("num =", num)
}

range 的使用

package main

import "fmt"

func main() {
    str := "abc"
    //迭代列印每個元素,預設返回2個值
    for i, data := range str {
        fmt.Printf("str[%d]=%c\n", i, data)
    }
    //第二個返回值,預設丟棄,返回元素的位置(下標)
    for i := range str {
        fmt.Printf("str[%d]=%c\n", i, str[i])
    }
    for i, _ := range str {
        fmt.Printf("str[%d]=%c\n", i, str[i])
    }
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章