go編程學習

1.go 項目目錄結構
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.大括號成對出現

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章