控制語句
s := "hello"
m := `hello
world`
注:string是不能直接修改的,若想修改可以這樣
s := "hello"
c := byte(s) // convert string
to byte type
c[0] = 'c'
s2 := string(c) // convert back to
string
type
fmt.printf("%s\n", s2)
err := errors.new("dfsdsfs sdlfk")
iferr != nil
這個是為了生成 enum 值,起始於0,按1遞增
const (
x = iota
// x == 0
y = iota
// y == 1
z = iota
// z == 2
w // w == 3
)const v = iota
// v == 0
go 裡沒有 public private 關鍵字,首字母大寫的變數、方法、常量都可以被被外部引用,否則就小寫
var arr [n]type
var arr [10]int
a := [3]int
c := [...]int
doublearray := [2][4]int, [4]}
easyarray := [2][4]int,}
切片和陣列的區別是切片長度可變,也就是不指定陣列長度。事實上,切片是引用型別。
var fslice int
slice := byte
對映就類似python裡的字典,定義方式是:map[keytype] valuetype
var numbers map[string] int
numbers := make(map[string]int)
numbers["one"] =1
rating := map[string]float32
csharprating, ok := rating["c#"]
delete(rating, "c")
對映是無序的,它也是引用型別,沒有固定長度。
make 是為slice,map,channel這三個型別分配記憶體空間的,返回的也是對應的型別。此外make也會進行初始化,所以它返回的肯定不是空值。
new也是用來分配空間的,但是返回的是指標。new不僅針對slice,map,channel這三個型別。
package main
import
"fmt"
func main()
if
integer == 3 else
ifinteger
< 3 else
func
myfunc()
func main()
fmt.println("sum is equal to ", sum)
}
sum := 1
forsum
< 1000
for 也有 break,continue這樣的關鍵字
for k,v := range
map
i := 10
switch i
integer :=6
switch integer
fallthrough會使得switch在按順序查到匹配的case後,繼續匹配下去
func sumandproduct(a, b int) (int, int)
func sumandproduct(a, b int) (add int, multiplied int)
variadic functions
func myfunc(arg ...int)
}
package main
import "fmt"
// ****** function to add 1 to a
func add1(a *int) int
func main()
for
i := 0; i
< 5; i++
panic and recover
func throwspanic(f func()) (b bool)
}()f() // if f causes panic, it will recover
return
}
main 只能有乙個,init可以有多個,但也只推薦乙個package乙個init
這倆方法都會被自動呼叫.
)這樣可以省略包名,直接呼叫裡面的函式:
)只執行 zzz 裡的init函式,不引入該包中的其他變數或函式
1、 ****** struct
type person struct
p := person // 順序要和定義的一致
q := person // 可以無序
r := struct // 匿名struct
2、 embedded fields in struct
package main
import
"fmt"
type human struct
type student struct
func main() , "computer science"}
// access fields
fmt.println("his name is ", mark.name)
fmt.println("his age is ", mark.age)
fmt.println("his weight is ", mark.weight)
fmt.println("his specialty is ", mark.specialty)
// modify mark's specialty
mark.specialty = "ai"
fmt.println("mark changed his specialty")
fmt.println("his specialty is ", mark.specialty)
fmt.println("mark become old. he is not an athlete anymore")
mark.age =46
mark.weight +=60
fmt.println("his age is", mark.age)
fmt.println("his weight is", mark.weight)
}
GO 語言的基本概念
1 go 語言中 和 有什麼區別 使用必須使用先var宣告例如 vara a 100 或var b 100 或var c int 100 是宣告並賦值,並且系統自動推斷型別,不需要var關鍵字 d 1002 golang之下劃線 之語義說明 這個應該是最簡單的用途,比如某個函式返回三個引數,但是我們...
基本概念 C 基本概念
由於工作中需要用到c 編寫的一些工具,有時候需要根據需求修改或者定製工具,所以現在不得不學習一下c 的基礎語法,此為筆記,不成章法!機器語言 組合語言 高階語言 面向過程的程式設計方法 物件導向的程式設計方法 泛型程式設計方法 1 演算法設計 2 源程式編輯 3 編譯 4 連線 5 執行除錯 輸入裝...
Go 方法的基本概念及使用
方法的宣告和呼叫 type a struct func a a test type person struct 給person型別繫結一方法 給person型別繫結一方法 給person結構體新增speak 方法,輸出 是乙個好人 func p person speak func main type...