Go基本概念

2021-08-20 02:53:32 字數 4352 閱讀 3711

控制語句

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...