字元型別
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 協議》,轉載必須註明作者和本文連結