Go語言快速入門
1 Hello World!
package main import "fmt" func main() { fmt.Println("hello world") }1234567
2 資料型別
資料型別簡單速覽
資料型別 | 基本資料型別 | 複合資料型別 | 值傳遞 | 引用傳遞 |
---|---|---|---|---|
int整數 | Y | N | Y | N |
float浮點 | Y | N | Y | N |
string字串 | Y | N | Y | N |
bool布林 | Y | N | Y | N |
array陣列 | N | Y | Y | N |
slice切片 | N | Y | N | Y |
map集合 | N | Y | N | Y |
function函式 | N | Y | Y | N |
pointer指標 | N | Y | Y | N |
struct結構體 | N | Y | Y | N |
interface介面 | N | Y | Y | N |
channel管道 | N | Y | Y | N |
2.1 基本資料型別
基本使用
package main import "fmt" func main() { var flg bool = true fmt.Printf("flg的資料型別是%T,值是%t\n",flg,flg) var num int = 100 fmt.Printf("num的資料型別是%T,值是%d\n",num,num) var userName string = "zhangsan" fmt.Printf("userName的資料型別是%T,值是%s\n",userName,userName) }123456789101112
2.1.1 bool布林型
值傳遞驗證,布林型
package main import "fmt" func main() { var flg bool = true fmt.Println("before:",flg) change(flg) fmt.Println("after:",flg) } func change(flg bool) { flg = false }1234567891011121314
2.1.2 int,float等數字型
我們這是快速入門,不搞那些什麼int64,int32啥的,有無符號啥的,先橫向學,別縱向鑽牛角給自己挖坑,最後忘了自己要學什麼。
值傳遞驗證,以int型為例
package main import "fmt" func main() { var num int = 100 fmt.Println("before:",num) change(num) fmt.Println("after:",num) } func change(num int) { num = 1000 }1234567891011121314
2.1.3 string字串型
值傳遞驗證,字串
package
main
import “fmt”
func
main() {
var
str string = “abc”
fmt.Println(“before:”,str)
change(str)
fmt.Println(“after:”,str)
}
func
change(str string) {
str
= “edf”
}
2.2 複合資料型別
2.2.1 array陣列
a) 陣列基本使用
package main import "fmt" func main() { // 陣列的建立及賦值 var addr = [3]string{"北京", "天津", "南京"} // 陣列值的修改 addr[1] = "蘇州" // 獲取陣列的容量和長度 fmt.Printf("陣列的長度是%d,容量是%d\n",len(addr),cap(addr)) // 陣列的遍歷 for i := 0; i < len(addr); i++ { fmt.Println(addr[i]) } // 陣列的遍歷 range方式 for i, v := range addr { fmt.Printf("[%d]---[%s]\n",i,v) } }1234567891011121314151617181920
b)值傳遞驗證,
陣列
package main import "fmt" func main() { var arr = [3]int{11,22,33} fmt.Println("before:",arr) change(arr) fmt.Println("after:",arr) } func change(arr [3]int) { arr[1] = 222 }1234567891011121314
2.2.2 slice切片
切片是動態陣列類似java的ArrayList
基本使用
a) 切片是兩倍擴容
package main import "fmt" func main() { // 切片的建立 var addr []string fmt.Printf("切片的長度是%d,容量是%d\n",len(addr),cap(addr)) // 切片中新增資料 addr = append(addr, "張三") fmt.Printf("切片的長度是%d,容量是%d\n",len(addr),cap(addr)) addr = append(addr, "李四") fmt.Printf("切片的長度是%d,容量是%d\n",len(addr),cap(addr)) addr = append(addr, "王五") fmt.Printf("切片的長度是%d,容量是%d\n",len(addr),cap(addr)) addr = append(addr, "趙六") fmt.Printf("切片的長度是%d,容量是%d\n",len(addr),cap(addr)) addr = append(addr, "阿七") fmt.Printf("切片的長度是%d,容量是%d\n",len(addr),cap(addr)) fmt.Printf("addr的資料型別是%T",addr) }123456789101112131415161718192021
b)
切片的遍歷
package main import "fmt" func main() { // 切片的建立 var addr []string // 切片中新增資料 addr = append(addr, "張三") addr = append(addr, "李四") addr = append(addr, "王五") addr = append(addr, "趙六") addr = append(addr, "阿七") fmt.Printf("切片的長度是%d,容量是%d\n",len(addr),cap(addr)) // 更改指定位置的資料 addr[1] = "我是李四親戚" // 切片遍歷 for i, v := range addr { fmt.Printf("[%d]->[%s]\n",i,v) } }123456789101112131415161718192021
c)
切片資料的擷取
package main import "fmt" func main() { // 建立切片 var nums = []int{11,22,33,44,55} fmt.Println(nums) // 獲取第二到尾部的所有資料 fmt.Println("-------獲取第二到尾部的所有資料-------") new_nums := nums[1:] fmt.Println(new_nums) fmt.Println(nums) // 獲取從開頭到倒數第二個元素的所有資料 fmt.Println("-------獲取從開頭到倒數第二個元素的所有資料-------") new_nums = nums[:3] fmt.Println(new_nums) // 獲取從第二個到第四個元素的所有資料(前閉後開) fmt.Println("-------獲取從第二個到第四個元素的所有資料(前閉後開)-------") new_nums = nums[1:4] fmt.Println(new_nums) }1234567891011121314151617181920212223
d) 引用傳遞驗證,切片
package main import "fmt" func main() { // 建立切片 var nums = []int{11,22,33} fmt.Println("before:",nums) change(nums) fmt.Println("after:",nums) } func change(nums []int) { nums[1] = 222 }123456789101112131415
2.2.3 Map集合
2.2.4 function函式
2.2.5 pointer指標
2.2.6 struct結構體
值傳遞驗證,結構體
package main import "fmt" func main() { stu := Student{name:"zhangsan", age:18} fmt.Println("before:",stu) change(stu) fmt.Println("after:",stu) } type Student struct { name string age int } func change(stu Student) { stu.age = 28 }12345678910111213141516171819
2.2.7 interface介面
2.2.8 channel管道
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30239065/viewspace-2716690/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- go語言快速入門教程Go
- GO 語言快速開發入門Go
- Go語言程式設計快速入門Go程式設計
- golang 快速入門 [3]-go 語言 helloworldGolang
- Go語言快速入門筆記01Go筆記
- golang 快速入門 [1]-go 語言導論Golang
- go 語法快速入門Go
- R語言快速入門R語言
- [翻譯] Go 語言入門Go
- ChainDesk : Go 語言入門指南AIGo
- 【Go語言入門系列】(八)Go語言是不是面嚮物件語言?Go物件
- go語言快速入門學習時需要注意什麼?Go
- golang 快速入門 [2.1]-go 語言開發環境配置-windowsGolang開發環境Windows
- 【Go by Example】GO語言入門 1-14Go
- Go 語言入門教程:變數Go變數
- 【Go 語言入門專欄】Go 語言的起源與發展Go
- Go語言之切片(slice)快速入門篇Go
- Go語言之陣列快速入門篇Go陣列
- Go 語言基準測試入門Go
- C++語言菜鳥快速入門C++
- 自然語言處理NLP快速入門自然語言處理
- 如何入門GO語言?這份GO語言超詳細入門教程你值得擁有-千鋒Go
- golang 快速入門 [5.1]-go 語言是如何執行的-連結器Golang
- 【Go語言入門系列】(七)如何使用Go的方法?Go
- Go語言之對映(map)快速入門篇Go
- GO語言入門 - (六)函式和方法Go函式
- Go語言入門經典第18章Go
- go語言入門之-函式和方法Go函式
- Golang語言檔案操作快速入門篇Golang
- Dart語言——45分鐘快速入門(下)Dart
- Dart語言——45分鐘快速入門(上)Dart
- golang 快速入門 [5.2]-go 語言是如何執行的-記憶體概述Golang記憶體
- Go快速入門(二)Go
- Go語言入門系列(四)之map的使用Go
- Go 語言入門練手專案推薦Go
- Go 語言極速入門4 - 物件導向Go物件
- Flutter小白教程系列(三) --- Dart語言快速入門FlutterDart
- Go 快速入門指南 - 序言Go