1.go 項目目錄結構
2.go build生成二進制文件
go build hello.go
go build -o hellotest hello.go #可以指定二進制文件名
3.go run 以腳本形式運行
go run hello.go
4.定義變量方法
package main
import "fmt"
//全局聲明
var n1 = 100
var n2 = 200
var name = "xiaohuihui"
//一次性聲明
var (
n3 = 300
n4 = 900
name2 = "mary"
)
func main(){
var i int
fmt.Println("i=",i) //默認值0
var num = 10.11
fmt.Println(num)
name := "tom" //等價於 var name string name = "tom"
fmt.Println(name)
var n1, n2, n3 int //多變量聲明
fmt.Println(n1,n2,n3)
var a, b, c = 100, "tom", 111
fmt.Println(a,b,c) //a = 100,b="tom",c=111
//類型推導
a, b, c := 100, "tom", 111
fmt.Println(a,b,c) //a = 100,b="tom",c=111
}
5.變量注意
package main
import "fmt"
func main(){
var i int = 10
i = 30
// 只能同一類型不斷變化 不正確賦值i = "50"
//var i int = 50 //變量在同一作用域不能重名
}
6.加號運算
package main
import "fmt"
func main(){
var a,b int = 1,2
var resp int
resp = a + b
fmt.Println(resp)
var str1 = "gello"
var str2 = "world"
var res = str1 + str2
fmt.Println(res)
}
7.整數,有符號整數類型int int8,int16,int32,int64 ,無符號整數uint,uint8,uint16,uint32,uint64
package main
//import "fmt"
import (
"fmt"
"unsafe"
)
func main(){
var j int8 = -128 //int8 佔1個字節,1個字節佔8個bit 小於-128回報錯
fmt.Println(j)
var i uint8 = 255 //uint 大於255回報錯 0~255
fmt.Println(i)
var c byte = 255 // byte範圍0~255,經常用來存字母
fmt.Printf("j 的類型%T", j) //Printf格式化輸出變量類型
fmt.Printf("j 的類型%T, 佔用字節數%d", j, unsafe.Sizeof(j))
}
8.浮點型float32單精度,佔用4個字節,float64雙精度(默認使用64),佔用8個字節,浮點數都是有符號的
package main
import (
"fmt"
)
func main(){
var price float32 = 89.123
fmt.Println(price)
var num1 float32 = -89.11111111111 //精度損失
var num2 float64 = -123.19100002333
fmt.Println(num1)
fmt.Println(num2)
var num3 = 1.1
fmt.Printf("num3數據類型 %T\n",num3)
//科學計數法表示小數
num4 := 5.1234566e2
fmt.Println(num4)
}
9.字符類型,保存的字符在ascii碼中,用byte類型,超過0~255,用int類型
package main
import (
"fmt"
)
func main(){
var c1 byte = 'a'
var c2 byte = '0'
fmt.Println("c1=",c1) //97 輸出ascii值 0~255
fmt.Println("c2=",c2) // 48
fmt.Printf("c1=%c\nc2=%c",c1,c2) //輸出a,0 輸出ascii值
//var c3 byte = '北' //超出0~255 溢出
var c4 int = '北' //超過 255 可以輸出
//fmt.Printf("c3=%c",c3) //格式化輸出正確的字符
fmt.Printf("c4=%c",c4)
var c5 int = 22269 //對應utf-8編碼 22269--->國
fmt.Printf("c5=%c",c5)
var n1 = 10 + 'a' //10 + 字符a的ascii碼值
fmt.Println(n1) //10 + 97 = 107
}
10.bool
package main
import (
"fmt"
"unsafe"
)
func main(){
var b = false
fmt.Println("b=",b)
fmt.Println("b的佔用空間=",unsafe.Sizeof(b))//佔用1字節
//bool只能是true或false,不能是0,1
}
11.字符串類型
package main
import (
"fmt"
)
func main(){
var address string = " nihao ,beijing!"
fmt.Println(address)
str1 := `main()` //``輸出原生字符串
fmt.Println(str1)
var str2 = "hello " + "world" //拼接字符串
fmt.Println(str2)
var str3 = "hello " + "world" + "hello " + "world" + "hello " + "world" +
"hello " + "world"
fmt.Println(str3) //拼接長字符串, 加號留在行尾,這樣就不會默認添加分號
}
12.數據類型轉換
package main
import (
"fmt"
)
func main(){
var i int32 = 100
// i => float
var n1 float32 = float32(i)
var n2 int8 = int8(i)
fmt.Printf("i=%v n1=%v n2=%v",i,n1,n2)
fmt.Printf("i type is %T\n",i) //i本身沒有變化,轉換的是存儲的值
var num1 int64 = 999999
var num2 int8 = int8(num1) //按照溢出處理,不會報錯
fmt.Println(num2) //值是63
}
13.基本數據類型轉string
package main
import (
"fmt"
)
//基本類型轉string
func main(){
var num1 int = 99
var num2 float64 = 23.456
var b bool = true
var myChar byte = 'a'
var str string //空值
//使用第一種方式轉換fmt.Sprintf方法
str = fmt.Sprintf("%d", num1)
fmt.Printf("str type %T str=%q\n",str,str)
str = fmt.Sprintf("%f",num2)
fmt.Printf("str type %T str=%q\n", str,str)
str = fmt.Sprintf("%t",b)
fmt.Printf("str type %T str=%q\n", str,str)
str = fmt.Sprintf("%c",myChar)
fmt.Printf("str type %T str=%q\n", str,str)
//第二種方式,使用strconv函數
var num3 int = 88
var num4 float64 = 23.456
var b2 bool = true
//int --->string
str = strconv.FormatInt(int64(num3),10)
fmt.Printf("str type %T str=%q\n",str, str)
//float ---> string
str = strconv.FormatFloat(num4,'f',10,64)
fmt.Printf("str type %T str=%q\n",str, str)
//bool --->string
str = strconv.FormatBool(b2)
fmt.Printf("str type %T str=%q\n",str, str)
var num5 int = 4567
str = strconv.Itoa(num5) //int ---> string
}
注:
1.go語言入口是main函數
2.go語言嚴格區分大小寫
3.go方法由一條一條語句構成,每條語句會自動加分號
4.go是一行一行編譯因此一行一條語句,否則編譯報錯
5.go定義的變量或引入的包必須用到,否則報錯
6.大括號成對出現