Go語言快速入門

qwer1030274531發表於2020-09-02

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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章