這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。 這章節主要講的是go中函數使用 在做習題過程中碰到的幾個比較值得紀念的問題是 定義了命名返回函數 但是沒有把它放在括弧裡面 結果一直編譯通不過 但是一眼看過去還是不知道怎麼錯了A
還有一個給我深刻印象的就是go的強型別檢查 以及變數的申明方式 和c/c++區別比較明顯的就是定義array 之前好像看過c/c++中的指標定義 那個*放在哪裡的問題 還有就是數組[]應該放在哪裡比較合適 在go中資料類型全都後置 比如: var test_var int test_var這個變數的類型是int 這個變數申明如果是在函數體外的 那麼var就必不可少 但是在函數內部可以使用 := 來定義 這個和=還是有區別的 定義和賦值完全分開 越寫越覺得是c/c++的升級版本 呵呵
package mainimport ( "fmt" "strings")func main() { /* for i := 1; i<=100; i++ { fmt.Println(strings.Repeat("A", i)) } for i := 1; i<=100; i++ { switch { case i%3==0 && i%5==0 : fmt.Println("FizzBuzz") case i%5==0: fmt.Println("Buzz") case i%3==0: fmt.Println("Fizz") default: fmt.Println(i) } } for i := 0; i<10; i++ { fmt.Println(i) } var i int LOOP: if i < 10 { fmt.Println(i) i += 1 goto LOOP } var arr [10]int for i := range arr { fmt.Println(i) } */}pengphy@Pengfei-Xue dsproxy_go$ cat chapter3.go package mainimport ( "fmt")func getOrderedArg(a,b int) (small, big int) { small = a big = b if a > b { small = b big = a } return}func float64Mean(data_in []float64) (mean float64) { data_in_len := len(data_in) if data_in_len == 0 { return 0.0 } sum := 0.0 for _, value := range data_in { sum += value } mean = sum / float64(data_in_len) return}type Stack []intfunc (s Stack) push(value int) Stack { if len(s)+1 > cap(s) { fmt.Println("stack is full, can not store more") } s = append(s, value) return s}func (s Stack) pop() (st Stack, value int) { if len(s) == 0 { fmt.Println("Stack is empty, can not pop") } value = s[len(s)-1] st = s[:(len(s)-1)] return}func main() { /* s := make(Stack, 0, 20) fmt.Println(s) s = s.push(32) fmt.Println(s) s, value := s.pop() fmt.Println(value) fmt.Println(s) fmt.Println(getOrderedArg(1,2)) fmt.Println(getOrderedArg(4,2)) test_float64_slice := [...]float64{0.0,1.0,2.3232,4e-5,43.00} fmt.Println(float64Mean(test_float64_slice[:])) for i:= 0; i<10; i++ { defer fmt.Println(i) } */}