GO的部分總結~
摘要:package main
import (
"fmt"
"math"
)
var f int = 1/*全域性變數允許 宣告但是不使用*/
const AGE int = 25 //定義常量
const SEX = "man...
package main import ( "fmt" "math" ) var f int = 1/*全域性變數允許 宣告但是不使用*/ const AGE int = 25 //定義常量 const SEX = "man"//定義常量 const ( //列舉型別 Unknow = 0 Female = 1 Male= 2 CC= "lalalla" D//列舉特效 D的值會和CC一樣 我自己理解為列舉的上下繼承, L= len(CC) //可以使用系統內建函式 否則編譯不過 ) //定義結構體 type Circle struct { radius float64 } type Books struct { titlestring author string bookid int urlstring } //iota //絲毫 極少 通常用於否定句 不是好詞 iota標誌列舉宣告的數量 從0開始 不好理解的概念哦~ func main() { fmt.Println("hello world22"); var a int = 1 /*var 宣告變數 a是int*/ a += 2 c := 2/*以省略var的方式宣告變數c 並且型別自動判斷!這種不帶宣告格式的只能在函式體中出現*/ var b string = "iloveyou!" /*宣告字串變數不能用單引號!*/ var d bool/*區域性變數變數宣告不使用也會報錯~~*/ e, f := 5, 7/*並行賦值*/ f, e = e, f//交換值 fmt.Println(a, c, b, d, e, f) _, f = e, f //拋棄e println(f, e) println(AGE, SEX) if AGE > 10 { println("大於10", max(1, 3)) g, h := swap("one", "two") println(g, h) //two one swap2(&g, &h) //函式是引用傳遞 用&傳參 println(g, h) //one two } else { } //這樣宣告方式不能在函式外宣告 getR := func(x float64) float64 { return math.Sqrt(x) } println(getR(9)) // 宣告結構體 var i Circle i.radius = 10; println(i.getArea()) var arr0 [10] int//宣告長度為10的空陣列 定義變數長度型別 var arr = [4]int{1, 2, 3, 4}//已知長度的陣列宣告 var arr1 = [...]int{1, 2, 3, 4, 5, 5, 6} //不確定長度數字宣告 推薦 println(arr[3]) println(len(arr1)) arr0[0] = 1 var arr2 [3][4] int //多維 arr2[0][0] = 1 var arr3 = [3][4]int{ //這個語法不太熟悉 {1, 2, 3, 4}, {1, 2, 3, 4}, {1, 2, 3, 4}, } println(arr3[0][0]) var ip *int//int型別空指標 nil println(ip)//空指標 nil ip = &a//空指標的賦值 println(ip)//訪問ip的地址 println(*ip) //訪問ip的值 //行內賦值方法用處還挺多呢! ss := Books{title: "你的名字", author: "楊森", url: "http://www.baidu.com/", bookid: 12} //格式化列印go的結構體 fmt.Printf("%+v", ss) struct1(ss) //定義切片 未指定長度的陣列 //初始化 ii_s := make([]int, 3, 5) //第三個引數是容量 p_s(ii_s) var numbers []int if (numbers == nil) { fmt.Println("numbers為空") } p_s(numbers) //for range可以遍歷數字 map等~ nums := []int{1, 2, 3, 4} for i, num := range nums { fmt.Println(i, num) } fmt.Printf("%d的階乘是%d", 10, fac(10)) //介面 多個方法的封裝 } //遞迴自己呼叫自己 階乘~ func fac(n uint64) (result uint64) { if (n > 0) { result = n * fac(n-1) return result } return 1 } func p_s(x []int) { fmt.Printf("len=%d, cap=%d,slice=%+v", len(x), cap(x), x) } func max(n1, n2 int) int { return n1 + n2 } /** 返回多個值 接收的時候需要使用並行賦值 */ func swap(s1, s2 string) (string, string) { return s2, s1 } //引用傳遞不用使用返回值和並行賦值接收 方便一點 func swap2(s1 *string, s2 *string) { var tmp string //宣告中間變數 tmp = *s1 *s1 = *s2 *s2 = tmp } //定義方式暫時不動~~~ func (c Circle) getArea() float64 { return 3.14 * c.radius * c.radius } //結構體做引數 func struct1(book Books) { fmt.Printf("%+v", book) }